Como gravar dados um por um dos arquivos tmp no arquivo de saída final usando o loop?

1

Eu tenho dois arquivos tmp chamados tmp1 e tmp2 , que contém algumas linhas.
arquivo tmp1,

1c\  
datafile no. 23  
2c\  
datafile is ok

arquivo tmp2,

3c\  
datafile no. 24  
4c\  
datafile is ok

Eu tenho um arquivo (chamado wrong_file ) que entradas eu quero corrigir a partir de arquivos tmp

datafile no. 32  
datafile is ok  
datafile no. 42  
datafile is ok

Meu arquivo de saída ( modified_file ) será como

datafile no. 23  
datafile is ok  
datafile no. 24  
datafile is ok    

Eu quero usar para loop, que será executado até o último arquivo tmp e gravar dados de arquivos tmp para o arquivo final (Output), em vez fazê-lo manualmente.

Eu tentei,

sed -f tmp1 wrong_file > file1  
sed -f tmp2 file1 > modified_file
    
por pmaipmui 12.06.2015 / 22:19

1 resposta

3

Tenho certeza que você pode fazer:

cat ./tmp[12] | sed -f - ./wrong_file >outfile

Pelo menos, isso não causará problemas se todas as instruções do script de sed forem específicas do número da linha. Não há necessidade de aplicar os scripts separadamente - você pode encadear todos eles e executar o script de uma só vez.

O fato de você ter que fazer isso, no entanto, é indicativo de trabalho duplicado. Aqui é uma cópia de um script sed que evitaria escrever qualquer um desses arquivos temporários em primeiro lugar e simplesmente digitalizar a entrada para as linhas que precisam ser alteradas antes de passar todo o script em um fluxo até o sed final de uma só vez:

{   sed '/^#\.tid\.setnr/!d;=;g;G' |
    paste  -d'c\\n' - - - ./addfile
}   <./mainfile | sed -f - ./mainfile

Sua saída não é idêntica aos dados de amostra aqui, pois ela é personalizada para as amostras fornecidas na outra pergunta . Mas evita escrever os scripts de modificação e envia todos os comandos de edição para um processo sed , que pode agir imediatamente.

Em geral, você pode considerar que um processo sed está tão pronto para manipular sua entrada de script em todas as formas como ele também pode estar pronto para lidar com sua entrada de conteúdo de edição .-

    
por 12.06.2015 / 22:29