A maneira usual de mesclar arquivos é join
join -t = file{1,2} | sed s/=/,/2
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?
A maneira usual de mesclar arquivos é join
join -t = file{1,2} | sed s/=/,/2
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
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