web-dev-qa-db-fra.com

Grep pour un mot dans un fichier et montrer aussi les lignes ci-dessous et ci-dessus?

Duplicate possible:
Comment grep 2 ou 3 lignes, l'une contenant le texte que je veux et les autres juste en dessous?

Dis que j'ai un fichier. Je veux trouver un mot particulier dans ce fichier et montrer la ligne.

Existe-t-il un moyen de faire ce qui précède, mais également d'inclure les 10 lignes ci-dessus et ci-dessous à partir de la ligne de résultat?

Comment pourrais-je faire cela en utilisant la ligne de commande Linux?

4
David

Supposons que votre fichier s'appelle filename, votre expression régulière est foo, et que vous souhaitez imprimer les lignes correspondantes et les lignes sur 10 lignes ( ci-dessus et ci-dessous) lignes correspondantes:

grep -C10 foofilename

Plus généralement, pour n lignes avant et après correspond:

grep -Cnfoofilename

Cette solution fonctionnera avec GNU grep (qu'Ubuntu et pratiquement tous les autres systèmes d'exploitation basés sur Linux). L’indicateur -C n’est pas nécessairement pris en charge dans toutes les implémentations de grep.

Pour imprimer uniquement les lignes avant ou après les correspondances, utilisez les commutateurs -Bn ou -An, où n correspond au nombre de lignes souhaité avant ou après. . Pour plus d'informations sur une autre manière de le faire, voir cette question connexe (félicitations à fossfreedom pour avoir remarqué la similitude).

4
Eliah Kagan