So drucken Sie die Nummer der Zeile, wo ein string wird in einer Datei?
Habe ich ein bestimmtes Wort, und ich möchte, um herauszufinden, welche Zeile in meiner Datei, die von word angezeigt wird.
Dies geschieht in einem c-shell-Skript.
Ich habe versucht zu spielen, um mit awk zu finden, die die Nummer der Zeile, aber bisher habe ich noch nicht in der Lage gewesen. Ich möchte zu weisen, dass die Zeilennummer einer Variablen als gut.
- Nicht mit dem schreiben von c-shell-Skripten. Google
CSH why not
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit grep
Suchen
word
in Datei und drucken Sie die Nummer der Zeile, verwenden Sie die-n
optiongrep
:Dieser druckt die Nummer der Zeile und die Zeile, auf die es passt.
Mit awk
Dies wird drucken Sie die Nummer der Zeile, auf die das Wort
word
erscheint in der Datei:Dies wird drucken Sie sowohl die Nummer der Zeile und die Zeile, auf der
word
erscheint:Können Sie ersetzen
word
mit jedem regulären Ausdruck, den Sie mögen.Wie es funktioniert:
/word/
Dieser wählt Zeilen mit
word
.{print NR}
Für den ausgewählten Linien, diese druckt die Zeilennummer (NR bedeutet Anzahl des Datensatzes). Sie können dies ändern und drucken Sie alle Informationen, die Sie interessiert sind in. So
{print NR, $0}
drucken würde die Nummer der Zeile, gefolgt von der Linie selbst,$0
.Zuweisung die Nummer der Zeile, um eine variable
Verwenden Substitutionen:
Die Verwendung von shell-Variablen können als Muster
Angenommen, dass die regex, die wir suchen, ist in der shell-variable
url
:Und:
-v
option weisen Sie der shell-Variablenurl
zu einer awk-Variablen zu, und verwenden Sie dann die awk-variable für regex-matching. Finden Sie die neue Sektion am Ende der Antwort.word
?grep -nf file1 file2
drucken wird jede Zeile (zusammen mit seiner Zeilennummer) in Datei2 übereinstimmt eine der Zeilen in Datei1. Die Zeilen in Datei1 sind als reguläre Ausdrücke behandelt, Wenn Sie nicht wollen, verwenden Siegrep -nFf file1 file2
zu suchen literal (ohne reguläre Ausdrücke) entspricht, statt.Sed
Können Sie den sed-Befehl
Erklärung
Den
-n
unterdrückt die normale Ausgabe, damit es nicht drucken die eigentlichen Linien. Es ersten Spiele der/pattern/
, und dann die=
- operator bedeutet, dass print die Nummer der Zeile. Beachten Sie, dass dies druckt alle Zeilen, enthält das Muster.sed -n "/$url/=" file.txt
$url
? Wenn es keine Sonderzeichen enthält, wie/
Schrägstriche dann müssen wir uns ändern Sie das Trennzeichen für die sed commannd.$url
hat keine Kommas. Versuchensed -n "\,$url,=" file.txt
Verwendung der NR-Variable
Gegeben, die eine Datei mit:
verwenden Sie die integrierte NR variable zu finden, die die Nummer der Zeile. Zum Beispiel:
finden Sie die Nummer der Zeile, die erste Spalte übereinstimmen RRBS