Comment puis-je obtenir / filtrer les entrées d'historique dans une plage spécifique?
J'ai un gros fichier historique et j'utilise fréquemment
history | grep somecommand
Maintenant, ma mémoire est assez mauvaise et je veux aussi voir ce que j'ai fait d'autre au moment où j'ai entré la commande.
Pour l'instant je fais ça: obtenir un match, disons 4992 somecommand
, alors je fais
history | grep 49[0-9][0-9]
c'est généralement assez bon, mais je préfère de loin le faire plus précisément, c'est-à-dire voir les commandes de 4972 à 5012, soit 20 commandes avant et 20 après.
Je me demande s'il existe un moyen plus simple? Je soupçonne qu'un script personnalisé est en règle, mais peut-être que quelqu'un d'autre a déjà fait quelque chose de similaire auparavant.
Réponses:
Vous pouvez dire
grep
d'imprimer certaines lignes entourant la correspondance, par exemple, 3 avant et 5 après:grep -C 4
est équivalent àgrep -A 4 -B 4
.Mais souvent, vous ne saurez pas exactement combien de lignes vous souhaitez à l'avance. Utilisez donc moins et cherchez à l'intérieur. Vous pouvez même lancer la recherche depuis la ligne de commande:
la source
less
! Je ne savais pas que tu pouvais faire çaEssayez fc:
... c'est une commande bash intégrée. (alors ne l'essayez pas dans tcsh:>)
la source
essayer
history | grep -C20 '^4992'
la source