Mesclando apenas dois arquivos com diferença

3

Eu tenho dois arquivos. file1 contém texto da seguinte forma:

#This Data written by the platform Team
id=kingDB

file2 contém o texto da seguinte forma:

#This Data written by the platform Team
id=kiteDB,mangoDB

Quero mesclar os dados file1 em file2 , Depois, file2 precisa ser o seguinte:

#This Data written by the platform Team
id=kiteDB,mangoDB,kingDB

Como posso fazer isso?

    
por Sachin 02.11.2014 / 07:56

3 respostas

3

A maneira usual de mesclar arquivos é join

join -t = file{1,2} | sed s/=/,/2
    
por 02.11.2014 / 14:17
1

Você pode usar sed , tail e cut :

 sed -i "s/=\(.*\)/=,$(tail -1 file1 | cut -d = -f 2)/" file2

Os comandos entre $(...) primeiro pegam a última linha de file1 , cortam com base no caractere = e pegam o campo de segundos ( kingDB ), então ele coloca isso no final da linha com '=' do segundo arquivo.¹

Nem todas as versões sed têm -i , se a sua não tentar:

sed "s/=\(.*\)/=,$(tail -1 file1 | cut -d = -f 2)/" file2 > file2.tmp
mv -f file2.tmp file2

¹ Estou assumindo aqui que file2 terminou em uma nova linha, se não você pode fazer sem sed

    
por 02.11.2014 / 08:27
0

Se você tiver uma linha única, poderá usar o seguinte código:

echo "id=" $(paste -d "" <( awk -F',' {'printf "%s,%s,", $1, $2  '} file2 ) <( awk -F'=' {'print $2'} file1 ) <(sed -i 's/id=//g' file2 )) > file2
    
por 02.11.2014 / 11:14