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
Buen truco, solo quisiera saber si tambien funciona en los demás Unix, ya que solo lo he probado en Linux.
En BSD también funciona.
Saludos
En Solaris 10 no funciona :(
# iostat -En | grep -B 4 ‘c0t0d0’
grep: illegal option — B
Usage: grep -hblcnsviw pattern file . . .
Salu2
En AIX 5.3 tampoco funciona:
grep: illegal option — B