Preciso copiar o conteúdo de um arquivo de texto e colá-lo em outro arquivo de texto. O primeiro arquivo de texto possui 10 linhas de dados e eu preciso que eles sejam copiados para o segundo arquivo de texto, começando na linha número 5 (por exemplo). Portanto, no segundo arquivo de texto, esses dados devem ser escritos da linha 5 à linha 14. Como isso pode ser feito? Desde já, obrigado. Considere-me como um novato em relação ao Linux.
text-processing
G. Paschalis
fonte
fonte
(head -n 5 a.txt ; cat b.txt ; tail -n +6 a.txt) > c.txt
A ferramenta mais fácil aqui pode ser
sed
. Para inserirb.txt
ema.txt
após a 5ª linha, você poderia escrever:sed
lê o arquivo especificado como argumento (a.txt
) linha por linha. Todas as linhas são reproduzidas na saída da mesma forma que apareceram na entrada, a menos que sejam alteradas por um comando.o
5
é um endereço (número da linha) no qual o seguinte comando deve ser executado. O comando que usamos ér
, que usa um nome de arquivo como argumento (aquib.txt
), lê-o completamente e o insere na saída após a linha atual.Como está acima, este
sed
linha de comando imprimirá apenas a saída no terminal, sem gravar em nenhum arquivo. Você pode redirecioná-lo para um novo arquivo (não para nenhum dos arquivos de entrada!) Usando o redirecionamento de saída do Bash:Ou você pode modificar diretamente o arquivo de entrada externo
a.txt
usando a opçãosed
's-i
(para "no local"). Se você escrever como-i.bak
, ele fará uma cópia de backup do arquivo de entrada original com o sufixo.bak
primeiro:Um exemplo:
fonte
(Reutilizando exemplo elegante de @ByteCommander :)
fonte