4069 votes

grep un fichier, mais de montrer autour de plusieurs lignes?

Je voudrais grep pour une chaîne de caractères, mais de montrer la précédente 5 lignes et 5 lignes ainsi que le contenu de la ligne. Je suis de numérisation pour les erreurs dans un fichier de log, et que vous voulez voir le contexte.

Des indices pour les désemparés?

5337voto

Pat Notz Points 46841

Pour BSD ou GNU grep vous pouvez utiliser -B num pour définir le nombre de lignes avant le match - -A num pour le nombre de lignes après le match.

grep -B 3 -A 2 foo README.txt

Si vous voulez le même nombre de lignes avant et après que vous pouvez utiliser -C num.

grep -C 3 foo README.txt

Cela permettra de montrer les 3 lignes avant et 3 lignes qui suivent.

655voto

Stu Points 7999

-A et -B de travail, comme -C n ( n des lignes de contexte), ou tout simplement -n ( n des lignes de contexte).

80voto

elmarco Points 6329

Accusé de réception des œuvres avec des arguments similaires que grep, et accepter -C., Mais il est généralement préférable pour la recherche par code.

42voto

dbr Points 66401
grep astring myfile -A 5 -B 5

Qui grep "monfichier" pour "astring", et de montrer les 5 lignes avant et après chaque match

19voto

mogron Points 291

Ok, mais ce qui si vous voulez afficher toutes les lignes de sortie après le match? grep -A0 et grep-A-1 ne coupe pas... – g33kz0r 22 Juil à 2:18

awk peut faire ceci:

awk '/search_pattern/,0' filename

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X