我想比较两个文件。文件1具有以下内容,
File1:
key1=value1
key2=value2
key3=value3
key4=value4
key5=value5
我的文件2具有以下内容
File2:
key2=value2.2
key3=value3.3
现在我想比较两个键值对,将文件2中匹配的键值更新为文件1,并将剩余的键值保留在文件1中
我期望的文件如下:
File3:
key1=value1
key2=value2.2
key3=value3.3
key4=value4
key5=value5
建议使用任何命令或shell脚本?
一种可能的方法:
join -t = -a 1 file1 file2 | sed 's/=.*=/=/'
如果密钥不在文件2中,则CCD_ 1参数强制打印文件1中的行。
请注意,要使用join
命令,必须预先对这两个文件进行排序。如果没有,你可以写下:
join -t = -a 1 <(sort file1) <(sort file2) | sed 's/=.*=/=/'
我在newfile.sh 中解决了这个问题
在新文件.sh中包含
##############file1 value#################
var1=`cat /path/to/file1.txt | grep -i "key2" | cut -d '=' -f2`
var2=`cat /path/to/file1.txt | grep -i "key3" | cut -d '=' -f2`
###############file2 value###################
var11=`cat /path/to/file2.txt | grep -i "key2" | cut -d '=' -f2`
var22=`cat /path/to/file2.txt | grep -i "key3" | cut -d '=' -f2`
###############################################
sed -i "s~$var1~$var11~g; s~$var2~$var22~g" /path/to/file1.txt