4132 Stimmen

grep eine Datei, aber mehrere umliegende Zeilen anzeigen?

Ich möchte gerne grep für eine Zeichenkette, sondern zeigt auch die vorangehenden fünf Zeilen und die folgenden fünf Zeilen sowie die übereinstimmende Zeile an. Wie könnte ich dies tun?

4 Stimmen

Ich habe eine Kopie von Das Perl-Skript von Brendan Gregg zu diesem Zweck. Funktioniert gut.

7 Stimmen

Eine Lösung, die unter Solaris funktioniert, finden Sie unter dieser Link .

154 Stimmen

man grep | grep -C 1 context :)

11voto

freelancer Punkte 151

Sie können die Option -A (nach) und -B (vorher) in Ihrem grep-Befehl.

Versuchen Sie grep -nri -A 5 -B 5 .

2 Stimmen

Was ist der Unterschied zu den vorherigen Antworten? Was sind die Optionen nri tun sollen? Wonach wird eigentlich gesucht? Womit wird versucht, übereinzustimmen? Bitte antworten Sie so ausführlich wie möglich per Bearbeitung (Änderung) Ihrer Antwort , nicht hier in den Kommentaren ( ohne "Bearbeiten:", "Aktualisieren:" oder ähnlich - die Antwort sollte so aussehen, als wäre sie heute geschrieben worden).

0 Stimmen

Die nri benutze ich, um die Anzahl der Zeilen anzuzeigen und die obere und untere Differenz zu ignorieren

0 Stimmen

Sie müssen immer noch das Muster hinzufügen, ich biete Ihnen nur die Option -A und -B

8voto

kenorb Punkte 134883

Hier ist die @Ygor Lösung en awk

awk 'c-->0;$0~s{if(b)for(c=b+1;c>1;c--)print r[(NR-c+1)%b];print;c=a}b{r[NR%b]=$0}' b=3 a=3 s="pattern" myfile

Hinweis: Ersetzen a y b Variablen mit Anzahl der Zeilen davor und danach.

Es ist besonders nützlich für Systeme, die die grep-Funktion nicht unterstützen. -A , -B y -C Parameter.

1 Stimmen

Sehr schön. Ja, es sieht etwas komplizierter aus, aber es ist tatsächlich plattformübergreifend. Getestet auf AIX und HP-UX.

7voto

prime Punkte 12730

Grep hat eine Option namens Context Line Control können Sie die --context darin einfach,

| grep -C 5

oder

| grep -5

Das sollte genügen

5voto

JBone Punkte 1377
$ grep thestring thefile -5

-5 bekommt man 5 Zeilen oberhalb und unterhalb der Übereinstimmung 'thestring' ist gleichbedeutend mit -C 5 o -A 5 -B 5 .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X