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