
2つのファイルがあります。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
、tail
および以下を使用できます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
¹これは改行で終わると仮定します。そうでない場合は省略してそのままにすることができます。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