# rm-rf.es | Administración de sistemas

Bitácora personal de un SysAdmin Gnu/Linux, Windows, BSD...

Truco GREP: Mostrar líneas anteriores/posteriores al resultado de la búsqueda


Esta es una de las muchas posibilidades que nos ofrece el comando grep, el rey de las búsquedas de strings en ficheros bajo sistemas Unix.

Concretamente hablamos de mostrar en el resultado del comando un número determinado de líneas anteriores o posteriores respecto a “target” del grep. Vamos con los ejemplos:

Grep normal, buscamos una cadena en un fichero de texto:

$ grep "EXT3-fs: mounted" /var/log/dmesg.0
[   13.274871] EXT3-fs: mounted filesystem with ordered data mode.

Ahora, buscamos la misma cadena pero queremos ver también las 3 líneas anteriores a la línea en la que se encuentra el resultado, utilizamos la opción “-B”:

$ grep -B 3 "EXT3-fs: mounted" /var/log/dmesg.0
[   13.274612] kjournald starting.  Commit interval 5 seconds
[   13.274635] EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
[   13.274864] EXT3 FS on sda5, internal journal
[   13.274871] EXT3-fs: mounted filesystem with ordered data mode.

Y para mostrar las tres líneas posteriores a la línea en la que se encuentra el resultado usamos “-A”:

$ grep -A 3 "EXT3-fs: mounted" /var/log/dmesg.0
[   13.274871] EXT3-fs: mounted filesystem with ordered data mode.
[   13.701126] type=1505 audit(1252737324.744:2): operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" name2="default" pid=2105
[   13.763396] type=1505 audit(1252737324.805:3): operation="profile_load" name="/sbin/dhclient-script" name2="default" pid=2109
[   13.763557] type=1505 audit(1252737324.805:4): operation="profile_load" name="/sbin/dhclient3" name2="default" pid=2109

Por supuesto podemos combinar las dos opciones, en este caso mostramos 4 líneas anteriores y 4 posteriores:

$ grep -B 4 -A 4 "EXT3-fs: mounted" /var/log/dmesg.0
[   12.665349] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input9
[   13.274612] kjournald starting.  Commit interval 5 seconds
[   13.274635] EXT3-fs warning: maximal mount count reached, running e2fsck is recommended
[   13.274864] EXT3 FS on sda5, internal journal
[   13.274871] EXT3-fs: mounted filesystem with ordered data mode.
[   13.701126] type=1505 audit(1252737324.744:2): operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" name2="default" pid=2105
[   13.763396] type=1505 audit(1252737324.805:3): operation="profile_load" name="/sbin/dhclient-script" name2="default" pid=2109
[   13.763557] type=1505 audit(1252737324.805:4): operation="profile_load" name="/sbin/dhclient3" name2="default" pid=2109
[   13.763609] type=1505 audit(1252737324.805:5): operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" name2="default" pid=2109

Categoría: Comandos, Unix | Etiquetas:

3 Comentarios

  1. Juan González dice:

    Buen truco, solo quisiera saber si tambien funciona en los demás Unix, ya que solo lo he probado en Linux.

  2. Alex dice:

    En BSD también funciona.

    Saludos

  3. Jona dice:

    En Solaris 10 no funciona :(

    # iostat -En | grep -B 4 ‘c0t0d0′
    grep: illegal option — B
    Usage: grep -hblcnsviw pattern file . . .

    Salu2

Deja una respuesta