Você poderia usar um editor de linha de comando, como sed
sed 'N;N;N;s/\n/\t/g' file > file.tsv
ou, mais programaticamente, adicionando caracteres de continuação de linha invertidos a cada uma das linhas que você deseja unir usando o operador de n skip m
endereço do GNU sed e seguindo-o com o clássico one-liner para unir continuação linhas:
sed '0~4! s/$/\t\/' file | sed -e :a -e '/\$/N; s/\\n//; ta'
Veja, por exemplo, Sed-liners explicados :
Append a line to the next if it ends with a backslash "\".
sed -e :a -e '/\$/N; s/\\n//; ta'
No entanto, IMHO seria mais fácil com um dos outros utilitários de processamento de texto padrão, por exemplo
paste - - - - < file > file.tsv
(o número de -
corresponderá ao número de colunas) ou
pr -aT -s$'\t' -4 file > file.tsv
(você pode omitir o -s$'\t
se não se importar que a saída seja separada por várias guias).
O estranho comportamento de reimportação que você está observando é quase certamente porque o arquivo original possui terminações de linha CRLF no estilo Windows. Se você precisar trabalhar com arquivos do Windows, poderá rolar a conversão para o comando de várias maneiras, por exemplo,
tr -d '\r' < file.csv | paste - - - -
ou
sed 'N;N;N;s/\r\n/\t/g' file.csv
O primeiro removerá TODOS os retornos de carro, enquanto o segundo preservará um CR no final de cada uma das novas linhas (que pode ser o que você deseja se o usuário final estiver no Windows).