Portál AbcLinuxu, 6. května 2025 07:35

Dotaz: grep logicke AND a OR

14.10.2006 09:57 georgo23 | skóre: 26 | blog: instalace_vmwaru | Karviná
grep logicke AND a OR
Přečteno: 10454×
Odpovědět | Admin
jakou syntaxi zapsat pomoci grep-u OR a AND ?

dekuji.
jen se učím jak se to naučit .... ...
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.10.2006 11:06 Kníže Ignor | skóre: 19 | blog: stoupa
Rozbalit Rozbalit vše Re: grep logicke AND a OR
Odpovědět | | Sbalit | Link | Blokovat | Admin
OR si najdi v manuálové stránce, AND mě nějak jednoduše nenapadá, pokud neumíš udělat jednoduše negaci těch jednotlivých regexpů (pokud ano pak samozřejmě grep -v ...)

asi bych dělal AND takto: ((exp1 .* exp2) OR (exp2 .* exp1))

induktivně to samozřejmě lze rozšířit pro konjunkce libovolné délky, akorát že délka výsledného regexpu roste exponenciálně :-D

další možnost je iterovat grepování (grep exp1 | grep exp2), což se mi zdá asi nejrozumnější, pořadí grepů vol tak, aby "síla" filtrů klesala
Jestli máš zálohu mého blogu, tak mi ji pošli. Nějak jsem si ho smazal :-)
13.1.2008 18:45 zis | skóre: 4
Rozbalit Rozbalit vše Re: grep logicke AND a OR
Myslim že by si to moh dělat přes awk a použít tam if-y. Více man awk.

Taky by podle mě mě šlo spojit více grepů a využít && , ||. Příklad

grep 'ahoj' && echo 'dopadlo to dobre' || echo 'dopadlo to spatne'

nebo tou interací
31.12.2007 14:35 NARDI
Rozbalit Rozbalit vše Re: grep logicke AND a OR
Odpovědět | | Sbalit | Link | Blokovat | Admin
jaksi zahadne mi google vyplivl tento odkaz na otazku 'grep' jako tusim druhy vysledek. a moc jsem se toho nedozvedel. tak pro ty kterym se stane podobna vec.

pro logicke OR funguje /a je zapsan v manualovych strankach/ prikaz grep -E .. nebo jednoduseji egrep.

syntaxe je potom

egrep "string1|string2"

a vypise tedy radky obsahujici Alespo Jeden ze zadanych retezcu.
13.1.2008 19:02 cronin | skóre: 49
Rozbalit Rozbalit vše Re: grep logicke AND a OR
Odpovědět | | Sbalit | Link | Blokovat | Admin
retazec1 OR retazec2 OR retazec3:
grep -e "retazec1" -e "retazec2" -e "retazec3" subor
retazec1 AND retazec2 AND retazec3:
grep retazec1 subor | grep retazec2 | grep retazec3
15.1.2008 14:02 noone | skóre: 7 | blog: xdf
Rozbalit Rozbalit vše Re: grep logicke AND a OR
Odpovědět | | Sbalit | Link | Blokovat | Admin
A co treba takhle?

grep -E 'prvni_retezec.*druhy_retezec'

Pripadne pokud je poradi nedulezite:

grep -E 'prvni_retezec.*druhy_retezec|druhy_retezec.*prvni_retezec'

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.