Pregunta: ¿Puede explicar cómo usar los operadores OR, AND y NOT en el comando grep de Unix con algunos ejemplos?
El siguiente archivo employee.txt se usa en los siguientes ejemplos.
$ 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
Ya sabía que grep es extremadamente poderoso según estos ejemplos de comandos grep.
Grep OR Operador
Use cualquiera de los siguientes 4 métodos para grep OR. Prefiero el método número 3 mencionado a continuación para el operador grep OR.
1. Grep O usando \|
Si usa el comando grep sin ninguna opción, debe usar \| para separar múltiples patrones para la condición o.
grep 'pattern1\|pattern2' filename
Por ejemplo, grep Tech o Ventas del archivo employee.txt. Sin la barra invertida delante de la canalización, lo siguiente no funcionará.
$ 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 O usando -E
La opción grep -E es para expresiones regulares extendidas. Si usa el comando grep con la opción -E, solo necesita usar | para separar múltiples patrones para la condición o.
grep -E 'pattern1|pattern2' filename
Por ejemplo, grep Tech o Ventas del archivo employee.txt. Solo usa el | para separar múltiples patrones OR.
$ 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 O Usar egrep
egrep es exactamente lo mismo que 'grep -E'. Por lo tanto, use egrep (sin ninguna opción) y separe varios patrones para la condición o.
egrep 'pattern1|pattern2' filename
Por ejemplo, grep Tech o Ventas del archivo employee.txt. Solo usa el | para separar múltiples patrones OR.
$ 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 O Usar grep -e
Usando la opción grep -e puede pasar solo un parámetro. Use la opción múltiple -e en un solo comando para usar múltiples patrones para la condición o.
grep -e pattern1 -e pattern2 filename
Por ejemplo, grep Tech o Ventas del archivo employee.txt. Use la opción múltiple -e con grep para los múltiples patrones OR.
$ 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 Y
5. Grep Y usando -E 'patrón1.*patrón2'
No hay un operador AND en grep. Pero, puede simular Y usando la opción grep -E.
grep -E 'pattern1.*pattern2' filename grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
El siguiente ejemplo combinará todas las líneas que contienen tanto "Dev" como "Tech" (en el mismo orden).
$ grep -E 'Dev.*Tech' employee.txt 200 Jason Developer Technology $5,500
El siguiente ejemplo reunirá todas las líneas que contienen tanto "Gerente" como "Ventas" (en cualquier orden).
$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt
6. Grep Y usando el comando grep múltiple
También puede usar varios comandos grep separados por tubería para simular un escenario AND.
grep -E 'pattern1' filename | grep -E 'pattern2'
El siguiente ejemplo agrupará todas las líneas que contienen tanto "Gerente" como "Ventas" en la misma línea.
$ grep Manager employee.txt | grep Sales 100 Thomas Manager Sales $5,000 500 Randy Manager Sales $6,000
Grupo NO
7. Grep NO usa grep -v
Usando grep -v puede simular las condiciones NOT. La opción -v es para la coincidencia inversa. es decir, coincide con todas las líneas excepto con el patrón dado.
grep -v 'pattern1' filename
Por ejemplo, muestre todas las líneas excepto aquellas que contengan la palabra clave "Ventas".
$ grep -v Sales employee.txt 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500
También puede combinar NOT con otro operador para obtener algunas combinaciones poderosas.
Por ejemplo, lo siguiente mostrará Gerente o Desarrollador (el bot ignora Ventas).
$ egrep 'Manager|Developer' employee.txt | grep -v Sales 200 Jason Developer Technology $5,500 400 Nisha Manager Marketing $9,500