Suche string in einer Datei und Ausgabe der Zeilennummer
awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file
mit dieser kann ich die Zeile vor der gefundenen Zeichenfolge Linie.
Wie kann ich drucken Sie Ihre Zeilennummer?
Nach der Besichtigung Kommentar zu thelux4, ich kann sagen, es ist unklar, was Sie wollen. Von der Frage, wie es aussieht, wollte man die Linie mit str (anstatt der Zeile vor), so wie ich bereits beantwortet, Sie sollte nur gehen mit
die Frage ist nicht falsch, "Wie kann ich drucken Sie Ihre Linie Nummer?" heißt es: ich will die Nummer der Zeile.
Es Klang anders Zitat:
Ich meinte Zeile Anzahl tatsächlich gibt es aber trotzdem vielleicht, ich hätte mehr klar. Vielen Dank für die Anregungen.
print
z.B. awk -v str="findme" '$0 ~ str {print}' path_to_file
. Aber wenn Sie möchten, dass die Nummer der Zeile (die Frage ist dann falsch), verwenden Sie NR
built-in variable.die Frage ist nicht falsch, "Wie kann ich drucken Sie Ihre Linie Nummer?" heißt es: ich will die Nummer der Zeile.
Es Klang anders Zitat:
with this i can get the line before the found string's line. How can i also print its line?
Es konnte behoben werden, indem @Johan 6.5 h nach mein Kommentar gesendet wurde. Nach der Kommentierung unter @eyadof beantworten, sollten Sie erkennen, dass Ihre Frage repariert werden muss, und mein Kommentar zurück, dann sollte Sie überzeugen noch mehr, um besser zu formulieren. Immer präzise, so viel wie Sie können und nicht vorgeben, Sie waren, wenn tatsächlich Sie waren es nicht. Es ist leicht zu überprüfen (vor allem von sich selbst als der OP), so dass ich nicht weiß, warum bringen Sie dieses bis jetzt.Ich meinte Zeile Anzahl tatsächlich gibt es aber trotzdem vielleicht, ich hätte mehr klar. Vielen Dank für die Anregungen.
InformationsquelleAutor thetux4 | 2011-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
NR
zu Holen Sie sich die aktuellen Zeile (Datensatz) Anzahl:print NR-1, b
anstatt explizit mitFS
InformationsquelleAutor ninjalj
Wenn ich interpretiere die Frage richtig, und Sie wollen einfach drucken Sie die Zeilennummer der Zeile, die vor jeder Zeile mit einer bestimmten Zeichenkette, die Sie tun können:
InformationsquelleAutor William Pursell
Hier ist eine Lösung:
Oder, wenn Sie nichts dagegen haben eine etwas andere Ausgabe, in der es '--' trennt Gruppen von Linien gefunden:
In diesem Fall, suchen Sie nach der Zeichenfolge "findme" in der Datei 'Dateipfad'. Die -B1 flag sagt, "druckt auch 1 Zeile vor."
InformationsquelleAutor Hai Vu
können Sie
echo $(awk '$0 ~ str{print b}{b=$0}' str="findme" path_to_file)
InformationsquelleAutor eyadof