違いのある2つのファイルのみをマージ

違いのある2つのファイルのみをマージ

2つのファイルがあります。file1次のテキストが含まれます。

#This Data written by the platform Team
id=kingDB

file2次のテキストが含まれます。

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

file1データをマージしたいですfile2file2以下が必要です。

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

どうすればいいですか?

答え1

ファイルにマージする一般的な方法は次のとおりです。join

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

答え2

sedtailおよび以下を使用できますcut

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

First間のコマンドは$(...)最後の行を取得し、file1文字=に基づいて切り捨て、秒フィールド(kingDB)を取得し、2番目のファイルの「=」を使用して行の末尾に配置します。

すべてのsedバージョンに対応する機能があるわけではありません-i。そのバージョンで試していない場合:

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

¹これは改行で終わると仮定しますそうでない場合は省略してそのままにすることができます。file2sed

答え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

関連情報