GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo grep para una palabra específica y agarrar texto

Podrías usar -B1 para imprimir la línea anterior también y luego tomar solo la primera línea:

$ grep -B1 'Minion' ip.txt
T5F6Z12:
   Minion did not return. [Not connected]
$ grep -B1 'Minion' ip.txt | head -n1
T5F6Z12:

O hazlo con awk :

$ awk '/Minion/{print p} {p=$0}' ip.txt
T5F6Z12:
$ awk '/Minion/{sub(/:$/, "", p); print p} {p=$0}' ip.txt
T5F6Z12

Aquí p sigue guardando la última línea. Cuando la línea de entrada contiene Minion , luego se imprime. Tenga en cuenta que esto funcionará para múltiples coincidencias a diferencia del grep solución anterior que da solo la primera coincidencia.


Si estás atado a grep entonces podría mantener coincidencias de varias líneas...

archivo:

T5F6Z12:
   Minion did not return. [Not connected]
T5F6Z11:
   Pinion did return. [connected]
T5F6Z10:
   Minion did not return. [Not connected]

Usando

grep -B 1 "Minion" file | grep ":$"
T5F6Z12:
T5F6Z10:

Si puedes usa sed entonces hay una respuesta aquí en U&L que he plagiado a continuación

sed -n '/Minion/{x;p;d;}; x' file
T5F6Z12:
T5F6Z10:

Linux
  1. Cómo uso Ansible y Anacron para la automatización

  2. Usando Grep –recursive, ¿Cómo excluir una línea específica con la palabra 'no deseado' y 'querido' en ella?

  3. ¿Cómo encuentro todos los archivos que contienen texto específico en Linux?

  4. ¿Cómo combinar find y grep para una búsqueda compleja? (GNU/linux, buscar, grep)

  5. Cómo buscar una palabra en todo el contenido de un directorio en Linux

Cómo encontrar una cadena o palabra específica en archivos y directorios

Cómo contar las apariciones de palabras en un archivo de texto

Cómo hacer Grep para múltiples cadenas y patrones

Cómo hacer una copia de seguridad y restaurar la tarjeta SD para Raspberry Pi

Cómo encontrar y eliminar archivos que contienen un texto específico en sus nombres en Linux

Cómo buscar y reemplazar texto, palabra o cadena en un archivo