benachbarte Zeilen mit Zeilennummern beim Greppen ausgeben

benachbarte Zeilen mit Zeilennummern beim Greppen ausgeben

Gibt es eine Möglichkeit, beim Greppen des Inhalts einer Datei die benachbarten Zeilen zusammen mit den Zeilennummern auszugeben? Ich versuche, Ausgaben in der folgenden Form zu erhalten:

$ ~/myscript.sh download file # 'download' being the pattern here
121: # and downloads with wget/curl, whichever is available.
122: download_file () {
123:  if which wget &>/dev/null; then
----------
356: # Since the prerequisites are already installed, we may proceed
357: download_urls=("http://example.com/foo/bar.bz2"
358:                "http://d1.example.com/xyz/abc.tar.gz"

Natürlich weiß ich, dass ich mein Muster mit der -nOption grepen und einige der benachbarten Zeilen ab der erhaltenen Zeilennummer anzeigen kann (sagen wir, indem ich eine der Methoden verwendeHier), aber gibt es eine bessere Möglichkeit, dies zu tun?

Antwort1

Sie können grepdie Context Line Control von GNU verwenden von man grep:

-A NUM, --after-context=NUM
Druckt NUM Zeilen mit nachfolgendem Kontext nach übereinstimmenden Zeilen. Fügt eine Zeile mit einem Gruppentrennzeichen (--) zwischen aufeinanderfolgende Gruppen von Übereinstimmungen ein. Mit der Option -o oder --only-matching hat dies keine Auswirkung und es wird eine Warnung ausgegeben.


-B NUM, --before-context=NUM
Druckt NUM Zeilen mit führendem Kontext vor übereinstimmenden Zeilen. Fügt eine Zeile mit einem Gruppentrennzeichen (--) zwischen aufeinanderfolgende Gruppen von Übereinstimmungen ein. Mit der Option -o oder --only-matching hat dies keine Auswirkung und es wird eine Warnung ausgegeben.

Wenn Sie auf beiden Seiten die gleiche Anzahl Zeilen benötigen, können Sie eine einzelne Kontextnummer verwenden:

-C NUM, -NUM, --context=NUM
Druckt NUM Zeilen des Ausgabekontexts. Fügt eine Zeile mit einem Gruppentrennzeichen (--) zwischen aufeinanderfolgende Gruppen von Übereinstimmungen ein. Mit der Option -o oder --only-matching hat dies keine Auswirkung und es wird eine Warnung ausgegeben.

In Kombination mit der -nFlagge ( --line-number) erhalten Sie nummerierte Übereinstimmungen mit dem umgebenden Kontext.

In Ihrem Beispiel:

grep -n -C1 download

verwandte Informationen