Otázka: Můžete vysvětlit, jak používat operátory OR, AND a NOT v příkazu Unix grep na několika příkladech?
Odpověď: V grep máme možnosti ekvivalentní operátorům OR a NOT. Neexistuje žádný operátor grep AND. Ale můžete simulovat A pomocí vzorů. Níže uvedené příklady vám pomohou pochopit, jak používat OR, AND a NOT v linuxovém příkazu grep.
V následujících příkladech je použit následující soubor zamestnanec.txt.
$ cat employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500 500 Randy Manager Sales $6,000
Už jste věděli, že grep je extrémně výkonný na základě těchto příkladů příkazů grep.
Operátor Grep NEBO
Pro grep OR použijte kteroukoli z následujících 4 metod. Preferuji metodu číslo 3 uvedenou níže pro operátor grep OR.
1. Grep NEBO Pomocí \|
Pokud použijete příkaz grep bez jakékoli volby, musíte použít \| pro oddělení více vzorů pro podmínku nebo.
grep 'pattern1\|pattern2' filename
Například grep buď Tech nebo Sales ze souboru zaměstnanec.txt. Bez zadního lomítka před dýmkou nebude následující fungovat.
$ grep 'Tech\|Sales' employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
2. Grep NEBO Pomocí -E
Volba grep -E je pro rozšířený regulární výraz. Pokud použijete příkaz grep s volbou -E, stačí použít | pro oddělení více vzorů pro podmínku nebo.
grep -E 'pattern1|pattern2' filename
Například grep buď Tech nebo Sales ze souboru zaměstnanec.txt. Stačí použít | k oddělení více vzorů NEBO.
$ grep -E 'Tech|Sales' employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
3. Grep NEBO Použití egrep
egrep je přesně to samé jako „grep -E“. Použijte tedy egrep (bez jakékoli možnosti) a oddělte více vzorů pro podmínku nebo.
egrep 'pattern1|pattern2' filename
Například grep buď Tech nebo Sales ze souboru zaměstnanec.txt. Stačí použít | k oddělení více vzorů NEBO.
$ egrep 'Tech|Sales' employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
4. Grep NEBO Pomocí grep -e
Pomocí volby grep -e můžete předat pouze jeden parametr. Použijte více možností -e v jednom příkazu k použití více vzorů pro podmínku nebo.
grep -e pattern1 -e pattern2 filename
Například grep buď Tech nebo Sales ze souboru zaměstnanec.txt. Použijte volbu multiple -e s grep pro více vzorů NEBO.
$ grep -e Tech -e Sales employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
Grep AND
5. Grep AND pomocí -E ‘vzor1.*vzor2’
V grep není žádný operátor AND. Ale můžete simulovat AND pomocí volby grep -E.
grep -E 'pattern1.*pattern2' filename grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
Následující příklad grepuje všechny řádky, které obsahují „Dev“ i „Tech“ (ve stejném pořadí).
$ grep -E 'Dev.*Tech' employee.txt 200 Jason Developer Technology $5,500
Následující příklad bude grepovat všechny řádky, které obsahují jak „Manager“, tak „Sales“ (v libovolném pořadí).
$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt
Poznámka: Používání regulárních výrazů v grep je velmi účinné, pokud víte, jak je efektivně používat.
6. Grep AND pomocí příkazu Multiple grep
K simulaci scénáře AND můžete také použít více příkazů grep oddělených svislou čarou.
grep -E 'pattern1' filename | grep -E 'pattern2'
Následující příklad zobrazí všechny řádky, které obsahují „Manager“ i „Sales“ ve stejném řádku.
$ grep Manager employee.txt | grep Sales 100 Thomas Manager Sales $5,000 500 Randy Manager Sales $6,000
Grep NE
7. Grep NEPOUŽÍVÁ grep -v
Pomocí grep -v můžete simulovat podmínky NOT. -v volba je pro obrácenou shodu. tj. Odpovídá všem řádkům kromě daného vzoru.
grep -v 'pattern1' filename
Zobrazte například všechny řádky kromě těch, které obsahují klíčové slovo „Prodej“.
$ grep -v Sales employee.txt 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500
Můžete také kombinovat NOT s jiným operátorem a získat tak výkonné kombinace.
Následující příklad zobrazí buď Správce nebo Vývojář (bot ignoruje Prodej).
$ egrep 'Manager|Developer' employee.txt | grep -v Sales 200 Jason Developer Technology $5,500 400 Nisha Manager Marketing $9,500