Wie im Beispiel versuche ich, Zeilennummern zu erhalten, die das Muster enthalten. Mein Muster enthält Schrägstriche, daher wollte ich ein benutzerdefiniertes Trennzeichen hinzufügen.
Dieses einfache funktioniert:
sed -n '/file/=' temp.txt
Die Verwendung von Trennzeichen zum Ersetzen von Zeichenfolgen funktioniert auch:
sed 's|file|gile|' temp.txt
aber wenn ich dem ersten Beispiel ein Trennzeichen hinzufügen möchte, ist dies nicht der Fall:
sed -n '|file /etc|=' temp.txt
Ich weiß, dass ich Schrägstriche maskieren kann, aber ich würde lieber ein benutzerdefiniertes Trennzeichen hinzufügen. Irgendeine Idee, wie ich meinen Befehl reparieren kann?
Akzeptierte Antwort:
Stéphane hat dir den sed
gegeben Lösung:
sed -n '|file /etc|=' file
Wenn Sie bereit sind, andere Tools zu verwenden, können Sie dies auch tun
grep -n 'file /etc' file
Das wird auch die Zeile selbst drucken, um nur die Zeilennummer zu bekommen, versuchen Sie:
grep -n 'file /etc' file | cut -d: -f 1
Oder Sie können perl
verwenden :
perl -lne 'm|file /etc| && print $.' file
Oder awk
:
awk '$0 ~ "file /etc" {print NR}'