Entfalten eine Datei auf Linux
Frage
Ich habe eine große Text-Datei, ca. 400.000 Zeilen 80 charachters breit auf liux.
Sie benötigen, um die Datei „entfalten“, die Fusion von vier Linien in eine mit 1/4 der Linien enden, jede Zeile 80 * 4 charachters lang.
irgendwelche Vorschläge?
Lösung
Ein einfacher Weg, um es mit awk zu tun sei:
awk '{ printf $0 } (NR % 4 == 0) { print }' filename
Obwohl, wenn man will gegen schützen, ohne einen Newline enden wird es ein wenig komplizierter:
awk '{ printf $0 } (NR % 4 == 0) { print } END { if (NR % 4 != 0) print }' filename
Andere Tipps
perl -pe 'chomp if (++$i % 4);'
Ich hoffe, dass ich Ihre Frage richtig verstanden. Sie haben eine Eingabezeile wie folgt aus (außer Ihre Linien sind länger):
abcdef
ghijkl
mnopqr
stuvwx
yz0123
456789
ABCDEF
Sie möchten Ausgabe wie folgt:
abcdefghijklmnopqrstuvwx
yz0123456789ABCDEF
Das folgende awk-Programm sollte es tun:
{ line = line $0 }
(NR % 4) == 0 { print line; line = "" }
END { if (line != "") print line }
Starten Sie es wie folgt aus:
awk -f merge.awk data.txt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow