desdobrando um arquivo no linux
Pergunta
Eu tenho um enorme arquivo de texto, cerca de 400.000 linhas 80 charachters amplas sobre liux.
necessidade de "desdobrar" o arquivo, mesclando quatro linhas em um único terminando ter 1/4 das linhas, cada linha 80 * 4 charachters longo.
alguma sugestão?
Solução
Uma maneira mais fácil de fazê-lo com awk seria:
awk '{ printf $0 } (NR % 4 == 0) { print }' filename
Embora se você queria proteger contra terminando sem uma nova linha à direita fica um pouco mais complicado:
awk '{ printf $0 } (NR % 4 == 0) { print } END { if (NR % 4 != 0) print }' filename
Outras dicas
perl -pe 'chomp if (++$i % 4);'
Espero que eu entendi sua pergunta corretamente. Você tem uma linha de entrada como esta (exceto suas linhas são mais longos):
abcdef
ghijkl
mnopqr
stuvwx
yz0123
456789
ABCDEF
Você quer uma saída como esta:
abcdefghijklmnopqrstuvwx
yz0123456789ABCDEF
O seguinte programa awk deve fazê-lo:
{ line = line $0 }
(NR % 4) == 0 { print line; line = "" }
END { if (line != "") print line }
Execute-o assim:
awk -f merge.awk data.txt
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow