LinuxParty
Pregunta: ¿Puede explicar cómo usar los operadores OR, AND y NOT en el comando grep de Unix/Linux con algunos ejemplos?
Respuesta: En grep, tenemos opciones equivalentes a los operadores OR y NOT. No hay un operador Grep para AND. Pero, puedes simular un 'AND' usando patrones. Los ejemplos mencionados a continuación lo ayudarán a comprender cómo usar OR, AND y NOT en el comando grep de Linux.
El siguiente archivo employee.txt se utiliza 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ías que grep es extremadamente poderoso en base a estos ejemplos de comandos grep .
Operador Grep 'OR'
Utilice 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 Sales del archivo employee.txt. Sin la barra diagonal frente a la tubería, 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 Sales 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 usando egrep
egrep es exactamente igual a 'grep -E'. Por lo tanto, use egrep (sin ninguna opción) y separe múltiples patrones para la condición o.
egrep 'pattern1|pattern2' filename
Por ejemplo, grep Tech o Sales 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 usando 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 Sales 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 AND
5. Grep Y usando -E 'patrón1. * Patrón2'
No hay operador AND en grep. Pero, puedes simular Y usando la opción grep -E.
grep -E 'pattern1.*pattern2' filename grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
El siguiente ejemplo agrupará 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 agrupará todas las líneas que contienen tanto "Manager" como "Ventas (sales)" (en cualquier orden).
$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt
Nota: Usar expresiones regulares en grep es muy poderoso si sabe cómo usarlo de manera efectiva.
6. Grep Y usando el comando Múltiple grep
También puede usar múltiples comandos grep separados por tubería para simular el escenario AND.
grep -E 'pattern1' filename | grep -E 'pattern2'
El siguiente ejemplo agrupará todas las líneas que contienen "Gerente" y "Ventas" en la misma línea.
$ grep Manager employee.txt | grep Sales
100 Thomas Manager Sales $5,000 500 Randy Manager Sales $6,000
Grep NOT
7. Grep NO usa grep -v
Usando grep -v puede simular las condiciones NOT. La opción -v es para la coincidencia invertida. es decir, coincide con todas las líneas excepto el patrón dado.
grep -v 'pattern1' filename
Por ejemplo, muestre todas las líneas excepto las que contienen 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 NO con otro operador para obtener algunas combinaciones potentes.
Por ejemplo, lo siguiente mostrará Administrador o Desarrollador (el bot ignora las Ventas).
$ egrep 'Manager|Developer' employee.txt | grep -v Sales
200 Jason Developer Technology $5,500 400 Nisha Manager Marketing $9,500
-
Scripting
- Iniciar una aplicación o un programa automáticamente desde el Cron en Linux
- Operaciones matemáticas en Shell Scripts
- 30 formas de validar archivos de configuración o scripts en Linux
- Operaciones artiméticas en Shell Scripts
- Cómo intercambiar el contenido de dos archivos en Linux
- Buscar directorios vacíos en Linux y borrarlos si procede.
- Shell Script Linux: Renombra quitando espacios
- Usar con crontab - último sábado del mes
- Shell Script de Linux para analizar un Fichero Access.log
- Analizar ficheros log de Linux con Scripts
- woof Código fuente
- Como tener seguro, protegido y encriptado tu Navegador Web Firefox (versión mejorada - versión 3)
- Arrays en Bash y Loops: iterar a través de los valores de la matriz
- Pasar una variable a AWK mediante la Shell.
- System Tar and Restore: un versátil script de copia de seguridad del sistema para Linux