Como se pode juntar arquivos com dados separados no bash?

6

Assim, pode-se facilmente juntar arquivos no bash com o cat:

cat *.txt > all.txt

Mas e se alguém quiser inserir algo entre os arquivos de entrada, como por exemplo um avanço de linha?

    
por Roger Ertesvag 01.02.2010 / 22:44

2 respostas

6

Requer o GNU sed :

sed -s '$G' *.txt > all.txt

acrescente uma linha de 8 traços e uma nova linha após cada arquivo

sed -s '$a--------' *.txt

Você pode usar seu sed '$ d' com isso

Compare com estes:

Insira uma linha de traços antes de cada arquivo:

sed -s '1i--------' *.txt

Faça o mesmo, mas sem uma nova linha após os traços:

sed -s '1s/^/--------/' *.txt

Coloque uma linha de traços no final da última linha de cada arquivo:

sed -s '$s/$/--------/' *.txt

Coloque cada chave com chaves:

sed -s -e '1i{' -e '$a}' *.txt
    
por 02.02.2010 / 01:40
6

Como um verso com subcasas:

( for i in *.txt ; do cat $i ; echo 'separator here' ; done ) >all.txt

Veja o que o subshell executa dividido em linhas de estilo de script:

for i in *.txt
do
cat $i
echo 'separator goes here' 
done

Neste exemplo, o separador age como um rodapé; adicione um cabeçalho adicionando outro echo antes do cat .

    
por 01.02.2010 / 22:54

Tags