Question

J'ai un énorme fichier texte, environ 80 lignes 400.000 charachters large sur liux.

Nécessité de « dérouler » le fichier, la fusion de quatre lignes dans un se terminant par avoir un quart des lignes, chaque ligne 80 * 4 charachters longue.

suggestions?

Était-ce utile?

La solution

Un moyen plus facile de le faire avec awk serait:

awk '{ printf $0 } (NR % 4 == 0) { print }' filename

Bien que si vous vouliez protéger contre la fin sans une nouvelle ligne de fuite, il devient un peu plus compliqué:

awk '{ printf $0 } (NR % 4 == 0) { print } END { if (NR % 4 != 0) print }' filename

Autres conseils

perl -pe 'chomp if (++$i % 4);'

J'espère bien compris votre question. Vous avez une ligne d'entrée comme celui-ci (à l'exception de vos lignes sont plus):

abcdef
ghijkl
mnopqr
stuvwx
yz0123
456789
ABCDEF

Vous voulez sortie comme ceci:

abcdefghijklmnopqrstuvwx
yz0123456789ABCDEF

Le programme awk suivant devrait le faire:

{ line = line $0 }
(NR % 4) == 0 { print line; line = "" }
END { if (line != "") print line }

Exécuter comme ceci:

awk -f merge.awk data.txt
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top