Wie bekomme ich die Zeilennummer von grep?

18

Das folgende grep

grep -r -e -n coll *

wird angezeigt

fullpath/filename:  <tag-name>coll</tag-name>

Ich würde gerne wissen, welche Zeile den folgenden Text hat, ich habe versucht, hinzuzufügen -n, aber es hat nicht funktioniert. Ich habe versucht hinzuzufügen | grep -n *, aber es hat etwas Seltsames getan.

Was ich gerne sehen würde (mir ist das Format egal) ist

fullpath/filename:10:  <tag-name>coll</tag-name>
UAdapter
quelle
1
Bei Verwendung der -nOption werden Zeilennummern angezeigt. Kannst du die Ausgabe von dem posten, was du bekommst?
Kris Harper

Antworten:

18

Sie sollten -eam Ende der Optionsliste Folgendes einfügen:grep -rne coll *

lgarzo
quelle
15

Keine Notwendigkeit für -r & -e!

Erhalte die Zeilennummer eines Musters!

grep -n "pattern" file.txt

Wenn Sie nur die Zeilennummer als Ausgabe erhalten möchten, fügen Sie einen weiteren grep-Befehl hinzu!

grep -n "pattern" file.txt | grep -Eo '^[^:]+'
Jona
quelle
1
Um nur die Zeilennummer zu erhalten, ist es einfacher zu benutzen cut, zBcut -f1 -d:
wjandrea
1

Gehen Sie wie folgt vor, um ein Muster in einer bestimmten Datei zu suchen und die übereinstimmenden Zeilen abzurufen:

grep -n <Pattern> <File> | awk -F: '{ print $1 }' | sort -u

oder cutwie von @wjandrea vorgeschlagen:

grep -n <Pattern> <File> | cut -f1 -d: | sort -u

wo

  • <Pattern>ist ein in Anführungszeichen gesetztes Glob-Muster (Option -Efür regulären Ausdruck verwenden);
  • <File> ist die Datei, die Sie interessiert;
  • Die erste Pipe awk ...filtert die Zeilennummern in der Ausgabe von grep (vor :jeder Zeile).
  • Die zweite Pipe stellt sicher, dass die Zeilennummern nur einmal vorkommen.
Sheljohn
quelle
Um nur die Zeilennummer zu erhalten, ist es einfacher zu benutzen cutals Awk, zBcut -f1 -d:
wjandrea
@wjandrea Einfacher auf welche Weise?
Sheljohn
Ich meine, die Syntax ist einfacher
wjandrea
@wjandrea Das klingt sehr objektiv.
Sheljohn
@ Wjandrea Sorry für den Sarkasmus, ich bearbeitet, um Ihren Vorschlag aufzunehmen :)
Sheljohn