Frage

Die folgende Anweisung entfernt Zeilennummern in einer TXT-Datei:

cat withLineNumbers.txt | sed 's/^.......//' >> withoutLineNumbers.txt

Die Eingabedatei wird mit der folgenden Anweisung erstellt (diese verstehe ich):

nl -ba input.txt >> withLineNumbers.txt

Ich kenne die Funktionalität von cat und ich weiß, dass die Ausgabe in die 'withoutLineNumbers' geschrieben wird.txt-Datei.Aber der Teil von '| sed 's/^.......//'' ist mir nicht wirklich klar.

Danke für Ihre Zeit.

War es hilfreich?

Lösung

Dieser reguläre sed-Ausdruck entfernt einfach die ersten 7 Zeichen aus jeder Zeile.Der reguläre Ausdruck ^....... sagt "Alle 7 Zeichen am Anfang der Zeile." Das sed-Argument s/^.......// ersetzt den obigen regulären Ausdruck durch eine leere Zeichenfolge.

Beziehen Sie sich auf die sed(1) man-Seite für weitere Informationen.

Andere Tipps

diese sed-Anweisung besagt, dass die ersten 7 Zeichen gelöscht werden.dot "." bedeutet irgendeinen Charakter.Es gibt einen noch einfacheren Weg, dies zu tun

 awk  '{print $2}' withLineNumbers.txt

sie müssen nur die 2. Spalte mit awk ausdrucken.Keine Notwendigkeit, Regex zu verwenden

wenn Ihre Daten Leerzeichen enthalten,

awk  '{$1="";print substr($0,2)}' withLineNumbers.txt

sed führt ein Suchen und Ersetzen durch.Das 's' bedeutet Suche, das nächste Zeichen ('/') ist das Trennzeichen, der Suchausdruck ist '^.......', und der Ersetzungsausdruck ist eine leere Zeichenfolge (d. h.alles zwischen den letzten beiden Schrägstrichen).

Die Suche ist ein regulärer Ausdruck.Das '^' bedeutet übereinstimmender Zeilenanfang.Jeder '.' bedeutet, dass ein beliebiges Zeichen übereinstimmt.Der Suchausdruck stimmt also mit den ersten 7 Zeichen jeder Zeile überein.Dieser wird dann durch eine leere Zeichenfolge ersetzt.Sed entfernt also die ersten 7 Zeichen jeder Zeile.

Ein einfacherer Weg, um das gleiche zu erreichen, könnte sein:

cut -b8- withLineNumbers.txt > withoutLineNumbers.txt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top