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>

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 *


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 '^[^:]+'

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.

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.