déploiement d'un fichier sous Linux
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?
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