Você pode usar sed
para mesclar a linha seguinte na linha atual, contanto que a linha atual não contenha 4 |
caracteres:
<file sed -e :1 -e 's/|/|/4;t' -e 'N;s/\n/ /;b1'
Algumas implementações de sed
têm -i
ou -i ''
para editar arquivos no local ( -i.back
para salvar o original com uma extensão .back
), portanto, com essas, você poderia:
sed -i -e :1 -e 's/|/|/4;t' -e 'N;s/\n/ /;b1' ./*.csv
Para editar todos os arquivos csv
não ocultos no diretório atual.
O mesmo com comentários:
<file sed '
:1
s/|/|/4; # replace the 4th | with itself. Only useful when combined with
# the next "t" command which branches off if the previous
# substitution was successful
t
# we only reach this point if "t" above did not branch off, that is
# if the pattern space does not contain 4 "|"s
N; # append the next line to the pattern space
s/\n/ /; # replace the newline with a space
# and then loop again in case the pattern space still does not contain
# 4 "|"s:
b1'