比较两个文件密钥,并用文件1中的相应密钥更新文件2的值



我想比较两个文件。文件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 

相关内容

  • 没有找到相关文章

最新更新