Como inserir linhas de um arquivo para outro arquivo usando comandos shell?

1

Eu quero escrever 8 linhas de file1 no início de file2 .

Meu file1 contém as seguintes linhas:

$BQ  
{ VOL       @home    }  
database    daba  
relation    tcdeatid  
copy           1  
{ version        0 }  
opendb  
clear
# other stuff

Meu file2 contém as seguintes linhas:

.lruno := 72  
.infno := 1    
writedb     
clear

Meu arquivo de saída será:

$BQ  
{ VOL       @home    }  
database    daba  
relation    tcdeatid  
copy           1  
{ version        0 }  
opendb  
clear  
.lruno := 72  
.infno := 1    
writedb       
clear
    
por pmaipmui 12.06.2015 / 21:21

4 respostas

2

Algo como:

head -n8 file1 | cat - file2 > file2."$$" && mv file2."$$" file2
    
por 12.06.2015 / 21:24
3

Você pode fazer isso com ferramentas padrão.

com paste :

paste -sd'\n' file1 file2

com sed :

sed p file1 file2
    
por 12.06.2015 / 21:28
2
cat file1 file2 > output_file

Cat é a abreviação de concatenar, que é o que você está tentando fazer. Se você quiser manter os resultados no arquivo1, basta adicioná-los ao final:

cat file2 >> file1

Observe que no primeiro caso output_file será truncado (usando > ). Usando um duplo irá acrescentar ( >> )

    
por 12.06.2015 / 21:25
1

Com ed

ed file2 <<END
0r file1
w
q
END

na linha "0", leia o arquivo "file1", salve e saia

Como um marcador: printf "%s\n" "0r file1" w q | ed file2

    
por 13.06.2015 / 01:38