
¿Cómo puedo obtener/filtrar entradas del historial en un rango específico?
Tengo un archivo de historial grande y uso con frecuencia
history | grep somecommand
Ahora, mi memoria es bastante mala y también quiero ver qué más hice cuando ingresé el comando.
Por ahora hago esto: conseguir pareja, digamos 4992 somecommand
, luego lo hago
history | grep 49[0-9][0-9]
Esto suele ser bastante bueno, pero preferiría hacerlo con mayor precisión, es decir, ver los comandos del 4972 al 5012, es decir, 20 comandos antes y 20 después.
Me pregunto si hay una manera más fácil. Sospecho que es necesario un script personalizado, pero quizás alguien más haya hecho algo similar antes.
Respuesta1
Puede indicar grep
que se imprima algunas líneas que rodean el partido, por ejemplo, 3 antes y 5 después:
history | grep -B 3 -A 5 somecommand
grep -C 4
es equivalente a grep -A 4 -B 4
.
Pero a menudo no sabrá exactamente cuántas líneas desea de antemano. Así que usa menos y busca en su interior. Incluso puedes iniciar la búsqueda desde la línea de comando:
history | less +/somecommand
Respuesta2
Prueba fc:
fc -l 4972 5012
... es un comando integrado de bash. (así que no lo intentes en tcsh :>)
Respuesta3
intentarhistory | grep -C20 '^4992'