Portál AbcLinuxu, 14. května 2025 01:12

Dotaz: grep ve skriptu

13.2.2007 00:28 kasparcz | skóre: 9 | Praha
grep ve skriptu
Přečteno: 347×
Odpovědět | Admin
Potrebuji prohledat PostScriptove soubory a zjisti velikost formatu. Pokud v bashi zadam na radku
grep 'PageSize\[3370 2383\]' *.*
, tak to funguje a najde retezec, ale jakmile to dam do skriptu
#!/bin/bash

for f in *.ps;
do
	if [ `grep 'PageSize\[3370 2383\]' $f` ]
	then
	format="A0"
	else format="neni"
	fi
echo $f-$format
done

, tak uz ne. Problem asi bude, ze ten radek, co najde grep vypada cely takto
"  <</PageSize[3370 2383]>> setpagedevice"
Vypis po probehnuti skriptu:
./reformat3: line 5: [: 2383]>>: binary operator expected
a0.ps-neni
Myslim ze man grep jsem precet cely a regularni vyrazy taky, ale porad me nic netrklo.
PS.: Je to muj prvni pokus, takze jsem mozna jenom blbej.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.2.2007 00:44 spang
Rozbalit Rozbalit vše Re: grep ve skriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dej to do ještě do dvojitých uvozovek:
if [ "`grep 'PageSize\[3370 2383\]' $f`" ]
13.2.2007 00:52 kasparcz | skóre: 9 | Praha
Rozbalit Rozbalit vše Re: grep ve skriptu
Hm. Funguje. Dekuji. A az zjistim proc, tak to bude teprve ono.
13.2.2007 00:56 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: grep ve skriptu
Volanie `grep...` nahratí shell tým, čo ten program vypíše a potom sa to snaží spustiť ako príkaz. Napr.
`echo ls`
je to isté ako keby tam bolo
ls
13.2.2007 01:02 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: grep ve skriptu
Sice funguje, ale je to jaksi ve stylu proc to delat jednoduse, kdyz to jde slozite.

[ string ] se chape stejne jako [ -n string ], tedy podminka na nenulovou delku retezce (jinak z nej nezbude skutecne nic a [ si stezuje na chybejici poviny parametr). Proto jsou take potreba ty uvozovky kolem, aby prazdny vystup grepu byl chapan jako prazdny retezec. ALE, tohle cele je ponekud mimo, protoze grep sam o sobe vraci navratovy kod 0 (= true) prave tehdy, kdyz nasel hledany vyraz. Tedy hranate zavorky a zpetne uvozovky nepridaji nic navic.
13.2.2007 01:04 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: grep ve skriptu
Pardon, ta zavorka patri o vetu vedle ... :)

... , tedy podminka na nenulovou delku retezce. Proto jsou take potreba ty uvozovky kolem, aby prazdny vystup grepu byl chapan jako prazdny retezec (jinak z nej nezbude skutecne nic a [ si stezuje na chybejici poviny parametr). ...
13.2.2007 00:49 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: grep ve skriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin
if `grep 'PageSize\[3370 2383\]' "$f" &>/dev/null`
(dá sa použiť aj parameter -q a -s)
13.2.2007 00:56 Marble | skóre: 27 | blog: marble
Rozbalit Rozbalit vše Re: grep ve skriptu
A jeste bez tech zpetnych uvozovek kolem, ty tam v tomhle pripade nedavaji smysl ...

if grep -qs "regexp..." "$f"; then ... fi
13.2.2007 00:57 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: grep ve skriptu
Pri kopírovaní som ich zabudol vymazať :) (v mojom testovacom skripte nie sú)
David Watzke avatar 13.2.2007 06:53 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: grep ve skriptu
A místo přesměrování do /dev/null samozřejmě použijeme -q :-D
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Jakub Hájek avatar 13.2.2007 01:28 Jakub Hájek | skóre: 14 | blog: zamek | Praha
Rozbalit Rozbalit vše Re: grep ve skriptu
Odpovědět | | Sbalit | Link | Blokovat | Admin

Pokud grep neco grepne, vraci nulu. Ten test je tam IMHO zbytecny.

for f in *.ps
do
   format="neni"
   grep 'PageSize\[3370 2383\]' $f && format"A0"
   echo $f-$format
done
Teprve tehdy, až nebudeme mít co ztratit, budeme opravdu svobodní.
Jakub Hájek avatar 13.2.2007 01:33 Jakub Hájek | skóre: 14 | blog: zamek | Praha
Rozbalit Rozbalit vše Re: grep ve skriptu
Jeste poslat vystup toho grepu do /dev/null.
   grep 'PageSize\[3370 2383\]' $f > /dev/null && format"A0"

Teprve tehdy, až nebudeme mít co ztratit, budeme opravdu svobodní.
13.2.2007 10:56 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: grep ve skriptu
A nebo použít -q, že?
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
Jakub Hájek avatar 13.2.2007 11:41 Jakub Hájek | skóre: 14 | blog: zamek | Praha
Rozbalit Rozbalit vše Re: grep ve skriptu
Neznal jsem, dík.
Teprve tehdy, až nebudeme mít co ztratit, budeme opravdu svobodní.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.