仅合并两个有差异的文件

仅合并两个有差异的文件

我有两个文件。file1包含文本如下:

#This Data written by the platform Team
id=kingDB

file2包含文本如下:

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

我想合并file1数据file2,然后file2需要如下:

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

我怎样才能做到这一点?

答案1

合并到文件的常用方法是join

join -t = file{1,2} | sed s/=/,/2

答案2

您可以使用sed,tailcut

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

First之间的命令$(...)获取 的最后一行file1,根据=字符剪切它并获取秒字段 ( kingDB),然后将其放在第二个文件的带有“=”的行末尾。

并非所有sed版本都有-i,如果您的版本不尝试:

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

¹我假设这里确实file2以换行符结束,如果不是,你可以不用sed

答案3

如果您有单行,则可以使用以下代码:

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

相关内容