Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Témata - Michal Švarc

Stran: 1 [2]
16
Vývoj / Rozsekání souboru ve skriptu
« kdy: 07. 01. 2015, 05:48:40 »
Pokud jde o konzoli, vpodstatě si vypíšu seznam řádků podle nichž by se měl soubor rozsekat.
Kód: [Vybrat]
grep -n 'Table structure for table' DB*.sql | awk -F :-- '{print $1}'

Zjistím kolik řádků soubor má:
Kód: [Vybrat]
wc -l DB*.sql | awk '{print $1}'

A začnu rozsekávat (např):
Kód: [Vybrat]
head -n $((6466-2)) *sql | tail -n $((6466-6439+1)) > tabulka.sql

Rád bych si to ale převedl do scriptu, který by tu práci dělal za mě.

Pojmenování souborů:
Kód: [Vybrat]
grep -n 'Table structure for table' DB*.sql | awk '{print $6}' | tr -d "\`"

Rád bych pochopil, jakým způsobem mohu toto převést do shellového scriptu.
Tak nějak si představuji, že bych začátek souboru, seznam řádků a poslední řádek, načetl do pole. Názvy souborů do druhého pole, a pak patrně pomocí while prováděl ořez.

Jen mi zatím není jasné jak to provést.
mělo by fungovat cca toto
Kód: [Vybrat]
RADKY=(`ls`)
bude to ale fungovat i s rourou?
tedy
Kód: [Vybrat]
RADKY=(`grep -n 'Table structure for table' DB*.sql | awk -F :-- '{print $1}'`)
a co teprv přidávání více záznamů (tohle asi fungovat nebude, že?)
Kód: [Vybrat]
RADKY=(0 `grep -n 'Table structure for table' DB*.sql | awk -F :-- '{print $1}'` `wc -l DB*.sql | awk '{print $1}'`)
zatím jsem to nezkoušel a pročítám fóra

17
Software / Bashov skript - kde je chyba?
« kdy: 15. 03. 2011, 01:36:00 »
Kód: [Vybrat]
#!/bin/bash

zapis="./zapis.txt";
zapisOld="./zapisOld.txt";
zapisBackUp="./zapisBackUp.txt";


if [ -e "$zapis" ]
  then
   cp $zapis $zapisOld
   rm $zapis
fi

pripony=( avi mkv mp4 wmv divx mpg mpeg )

for ((i=0;i<7;i++))
do

 if [ -e "$zapis" ]
  then
   ls *.${pripony[$i]} >> $zapis 2>/dev/null
  else ls *.${pripony[$i]} > $zapis 2>/dev/null
 fi

done

while read line   
do

#  sh ~/Dokumenty/ScriptyBASH/vcs-1.12.2.sh -n 21 -c 3 -H160 "$line"
  sleep 1s
  echo $line

done <$zapis

cp $zapis $zapisBackUp
rm $zapis
V sekundových intervalech vypisuje jednotlivé řádky ze souboru co si vytvoří, ale když to změním takhle:

Kód: [Vybrat]
...
  sh ~/Dokumenty/ScriptyBASH/vcs-1.12.2.sh -n 21 -c 3 -H160 "$line"
  sleep 1s
#  echo $line
...
spustí se mi daný program jen jednou

18
Software / OCR na hardsub z AVI videa
« kdy: 09. 03. 2011, 09:40:09 »
Nějaký tip na OCR pro vytáhnutí hardsub titulků z avi kontejneru?

19
Software / Který manuál hledám?
« kdy: 03. 02. 2011, 10:28:32 »
Man: find all matching manual pages (set MAN_POSIXLY_CORRECT to avoid this)
 * egrep (1)
   egrep (1+)
Man: Kterou manuálovou stránku si přejete?

nebo:
 * grep (1)
   grep (1+)
   grep (1p)

to si mám přečíst nejlépe všechny, nebo existuje nějaký postup, který mi řekne který hledám?

PS: zatím jsem používal 1

20
Software / Jak nalézt soubory v adresáři
« kdy: 03. 02. 2011, 00:37:13 »
pro jednu příponu to není problém (ls *.mkv; find *.mkv; find | grep mkv$ )

ls *.mkv *.avi (pokud není alespoň jeden soubor od každé přípony - vypíše nalezené a chybu)
find *.mkv *.avi (stejně jako u ls)

zajímá mě, jak nechat vypsat v jednom seznamu, soubory avi a mkv, aniž by to vypsalo chybu

21
Software / Skripty a mezery v názvech souborů
« kdy: 29. 01. 2011, 13:15:09 »
Co bych měl udělat, když mám mezery v názvech souborů a chci s nimi pracovat v shelu? ( vcs)
Kód: [Vybrat]
#!/bin/bash

cd $1 #načte adresář

for fileMkv in "*.mkv"
do
   if [ -e $fileMkv ]
   then
      vcs -O bg_sign=black -O bg_contact=silver -O fg_heading=black -H 100 -c 4 -i 250s -j -n 24 $fileMkv
   else echo "soubor s příponou mkv neexistuje"
   fi
done
takhle to pracuje s jedním souborem s mezerami, ale když jich tam je víc, tak se nechytá;
když nejsou s mezerami tak stačí tato část 'for fileMkv in "*.mkv"' bez uvozovek

Stran: 1 [2]