Kürzen Sie Zeilen auf eine bestimmte Länge

Kürzen Sie Zeilen auf eine bestimmte Länge

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 cutBefehl 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 >outfileam 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 .charsder ~$0Capture-Variable Folgendes hinzufügen:

~$ raku -ne 'put ~$0.chars if m/ ^^(. ** 80) /;' ~/top50.txt
80
80
80
80
[TRUNCATED]

HTH.

https://raku.org

verwandte Informationen