Outro comando que pode adicionar novas linhas, se necessário, é awk
, então:
awk 1 ./*.txt
Eu tenho um monte de arquivos .text, mais dos quais terminam com o padrão nl.
Um casal não tem nenhum terminador no final. O último byte físico é (geralmente) um caractere alfabético.
Eu estava usando cat *.text >| /tmp/joined.text
, mas depois notei alguns lugares em joined.text onde a primeira linha de um arquivo apareceu no final da última linha de um arquivo anterior. Inspecionando o arquivo anterior, vi que não havia um terminador de linha - explicou a concatenação.
Isso levantou a questão: qual é a maneira mais fácil de concatenar, ficando no nl ausente?
Opção 1 - Uma solução que pode efetivamente adicionar uma linha em branco a alguns arquivos de entrada. Para mim, isso não é um problema, pois o processamento do joined.text pode lidar com isso.
Opção 2 - Uma solução que adiciona o cr / fl apenas a arquivos que ainda não terminaram dessa forma.
Outro comando que pode adicionar novas linhas, se necessário, é awk
, então:
awk 1 ./*.txt
Com algumas implementações de cut
como o GNU cut
, você pode fazer:
cut -b 1- ./*.text > output
, uma vez que irá adicionar a nova linha que falta se estiver faltando.
Este prático liner Perl pode fazer o trabalho de adicionar a nova linha ausente apenas se ainda não estiver lá:
perl -lpe '' ./*.text > output
A primeira abordagem que vem à mente é fazer um loop nos arquivos e apenas imprimir seu conteúdo com uma nova linha anexada:
for f in *text; do
printf '%s\n' "$(cat < "$f")"
done > /tmp/joined.text
O $()
removerá qualquer caractere de nova linha já existente, portanto, isso resultará em apenas um \n
no final de cada arquivo.
Tags text-processing cat shell newlines