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

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

  1. En Solaris 10 no funciona :(

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

    Salu2

Comments are closed.