Wenn ich cat -n text.txt
die Zeilen automatisch nummeriere, wie verwende ich dann den Befehl, um nur bestimmte nummerierte Zeilen anzuzeigen.
text-processing
cat
Geckono1
quelle
quelle
tail
+head
kann dies auch tun, wie kannawk
Antworten:
Verwenden
sed
Verwendungszweck
Eine Zeile drucken (5)
So drucken Sie mehrere Zeilen (5 und 8)
So drucken Sie einen bestimmten Bereich (5 - 8)
So drucken Sie den Bereich mit einer anderen bestimmten Zeile (5 - 8 & 10)
quelle
Eine Möglichkeit ist die Verwendung von
sed
:Dabei ist 11 die Nummer der zu entfernenden Zeile.
Oder entfernen Sie alle bis auf 11:
Bereiche sind auch möglich:
Und
cat -n
wird nicht einmal benötigt:quelle
Sie können awk direkt verwenden.
Ersetzen Sie '1' durch die gewünschte Zeilennummer.
quelle
Je nach Ziel mag ich Kopf oder Grep
cat /var/log/syslog -n | head -n 50 | tail -n 10
Gibt die Zeilen 41 bis 50 zurück.
oder
cat /var/log/syslog -n | grep " 50" -b10 -a10
zeigt die Zeilen 40 bis 60 an. Das Problem bei der grep-Methode ist, dass Sie das Konto zum Auffüllen der Zeilennummern verwenden müssen (beachten Sie das Leerzeichen)
Beide sind sehr praktisch zum Parsen von Protokolldateien.
quelle
cat
jedochcat
kann nicht tun, was die OP willWie andere Ihnen gezeigt haben, besteht keine Notwendigkeit zu verwenden
cat -n
. Andere Programme erledigen das für Sie. Wenn Sie jedoch die Ausgabe wirklich analysierencat -n
und nur bestimmte Zeilen anzeigen müssen (z. B. 4-8, 12 und 42), können Sie Folgendes tun:In
awk
,$1
ist das erste Feld, so dass dieser Befehl alle Zeilen ausgibt, deren erste Felder i) zwischen 4 und 8 (einschließlich) oder ii) 12 oder iii) 42 sind.Wenn Sie auch das Feld entfernen möchten, das hinzugefügt wurde
cat -n
, um die ursprünglichen Zeilen aus der Datei zu erhalten, können Sie Folgendes tun:quelle