Löschen Sie die ersten fünf Zeichen in einer beliebigen Zeile einer Textdatei unter Linux mit sed


Antworten:


80
sed 's/^.....//'

meint

Ersetzen Sie ("s", ersetzen Sie) den Zeilenanfang und dann 5 Zeichen (".") durch nichts .

Es gibt kompaktere oder flexiblere Möglichkeiten, dies mit sed oder cut zu schreiben.


Wie würden Sie dies für das letzte Zeichen einer Zeichenfolge tun?
Blarg

3
@ Blarg versuchensed 's/.$//'
Rodrigo

plus 1 für die Beantwortung des Teils 'mit sed' der Frage und die anschließende Erwähnung, dass dies cutbesser ist
sg

136

Verwendung cut:

cut -c6-

Dies druckt jede Zeile der Eingabe ab Spalte 6 (die erste Spalte ist 1).


1
Hier hat cut eine bessere Leistung als sed, aber ich habe Probleme bei der Verwendung von utf-8-codierten Zeichen.
PSchwede

Um den Kommentar von @ PSchwede näher zu erläutern, cutbehandelt GNU alle Zeichen als Bytes, auch wenn Sie die -cOption verwenden. GNU cutunterstützt keine Multi-Byte-Zeichen und wird auf absehbare Zeit wahrscheinlich keine Multi-Byte-Zeichen unterstützen
Harold Fischer

15
sed 's/^.\{,5\}//' file.dat

4
BSD sed akzeptiert nicht die höchstens gebundene ( {,5}), dies ist GNU-spezifisch. Ein Ausdruck, der auf beiden funktioniert, wäresed 's/^.\{5\}//' file.dat
Tristan


0

sed 's/^.\{,5\}//' file.dat arbeitete wie ein Zauber für mich

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.