我想比较两个文件。 file1具有以下内容,
File1:
key1=value1
key2=value2
key3=value3
key4=value4
key5=value5
我的文件2具有以下内容
File2:
key2=value2.2
key3=value3.3
现在我要比较两个键值对并将file2中匹配键的值更新为file1,并将剩余键值保存在file1中
我的预期文件如下:
File3:
key1=value1
key2=value2.2
key3=value3.3
key4=value4
key5=value5
建议任何命令或shell脚本?
答案 0 :(得分:0)
一种可能的方式:
join -t = -a 1 file1 file2 | sed 's/=.*=/=/'
如果file2中不存在该键,则-a 1
参数强制从文件1打印该行。
请注意,要使用join
命令,必须事先对这两个文件进行排序。如果不是,你可以这样写:
join -t = -a 1 <(sort file1) <(sort file2) | sed 's/=.*=/=/'
答案 1 :(得分:0)
我解决了这个问题newfile.sh
在newfile.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