
Ich habe eine Datei mit vielen Zeilen und möchte jede Zeile auf eine Länge von 80 Zeichen kürzen. Wie kann ich das tun?
Ich habe bereits Zeilen mit weniger als 80 Zeichen herausgefiltert. Jetzt habe ich eine Datei mit Zeilen mit einer Länge von über 80 Zeichen und möchte jede Zeile so kürzen, dass sie genau 80 Zeichen lang ist. Mit anderen Worten: Ich möchte die ersten 80 Zeichen in jeder Zeile beibehalten und den Rest der Zeile entfernen.
Antwort1
Sie können den folgenden cut
Befehl verwenden:
cut -c -80 file
Mit grep
:
grep -Eo '.{80}' file
Antwort2
Verwenden vonAWK:
awk '{print substr($0,1,80)}' file.txt
Verwenden vonschneiden:
cut -c -80 file.txt
Verwenden voncolrm:
colrm 81 file.txt
Verwenden vonsed:
sed 's/^\(.\{80\}\).*$/\1/' file.txt
Verwenden vongrep:
grep -Eo '.{80}' file.txt
Antwort3
Um jede Zeile der Datei auszuschneiden (zu kürzen) (und die Ausgabe in der aktuellen Konsole anzuzeigen), verwenden Sie:
cut -c -80 infile # cut only counts bytes (fail with utf8)
grep -o '^.\{1,80\}' infile
sed 's/\(^.\{1,80\}\).*/\1/' infile
Wenn Sie nach 80 Zeichen einen Zeilenumbruch einfügen und jede Zeile mit mehr als 80 Zeichen in mehrere Zeilen aufteilen möchten, verwenden Sie:
fold -w 80 infile # fold, like cut, counts bytes.
Wenn Sie nur an Leerzeichen (ganzen Wörtern) trennen möchten, verwenden Sie:
fold -sw 80 infile
Bei allen oben genannten Lösungen leiten Sie >outfile
am Ende eines Befehls zu einer anderen Datei um, um das Ergebnis darin zu speichern (verwenden Sie nicht denselben Namen, das funktioniert nicht) outfile
. Beispiel:
fold -sw 80 infile > outfile
Antwort4
Verwendung von Raku (geb. Perl6)
~$ raku -ne 'put ~$0 if m/ ^^(. ** 80) /;'
AUSGABE:
the of and to in a is that for it as was with be by on not he i this are or his
the of and to in a is that for it as was with be by on not he i this are or his
the of and to in a is that for it as was with be by on not he i this are or his
the of and to in a is that for it as was with be by on not he i this are or his
[TRUNCATED]
Der obige Code gibt die ersten 80 Zeichen einer Zeile zurück (die ^^
Nullbreite bedeutet "Zeilenanfang"). Wenn die Zeile zu kurz ist, wird nichts zurückgegeben. Um zurückzukehrenBIS ZU80 Zeichen, verwenden Sie das Formular ** 1..80
.
Die Nummerierung der Captures beginnt mit $0
. Sie erhalten die Anzahl der zurückgegebenen Zeichen, indem Sie .chars
der ~$0
Capture-Variable Folgendes hinzufügen:
~$ raku -ne 'put ~$0.chars if m/ ^^(. ** 80) /;' ~/top50.txt
80
80
80
80
[TRUNCATED]
HTH.