it-swarm.com.de

Dateiname und Zeilennummer in der Grep-Ausgabe anzeigen

Ich versuche, mein Rails Verzeichnis mit grep zu durchsuchen. Ich suche nach einem bestimmten Wort und möchte grep verwenden, um den Dateinamen und die Zeilennummer auszudrucken.

Gibt es eine Grep-Flagge, die das für mich erledigt? Ich habe versucht, eine Kombination aus -n und -l aber diese drucken entweder die Dateinamen ohne Nummern aus oder geben einfach viel Text an das Terminal aus, der nicht einfach zu lesen ist.

ex:

  grep -ln "search" *

Muss ich es zu awk leiten?

79
trev9065

Ich denke, -l Ist zu restriktiv, da es die Ausgabe von -n Unterdrückt. Ich würde vorschlagen -H (--with-filename): Gib den Dateinamen für jede Übereinstimmung aus.

grep -Hn "search" *

Wenn dies zu viel Ausgabe ergibt, versuchen Sie -o, Um nur den Teil zu drucken, der passt.

grep -nHo "search" * 
123
spokeadoke
grep -rin searchstring * | cut -d: -f1-2

Dies würde bedeuten, rekursiv zu suchen (in diesem Beispiel nach der Zeichenfolge searchstring), Groß-/Kleinschreibung zu ignorieren und Zeilennummern anzuzeigen. Die Ausgabe von diesem Grep sieht ungefähr so ​​aus:

/path/to/result/file.name:100: Line in file where 'searchstring' is found.

Als Nächstes leiten wir dieses Ergebnis mit dem Doppelpunkt : Als Feldbegrenzer und der Anzeige der Felder 1 bis 2 an den Befehl cut weiter.

Wenn ich die Zeilennummern nicht benötige, verwende ich oft -f1 (Nur den Dateinamen und den Pfad) und leite die Ausgabe an uniq weiter, sodass ich jeden Dateinamen nur einmal sehe:

grep -ir searchstring * | cut -d: -f1 | uniq
29
JBW

Ich benutze gerne:

grep -niro 'searchstring' <path>

Aber das liegt nur daran, dass ich immer die anderen Wege vergesse und nicht vergessen kann Robert de grep - niro aus irgendeinem Grund :)

12
Peter Versnee