查找并将一个文件中包含的行字符串替换为shell脚本中的第二个文件

时间:2014-02-03 21:39:00

标签: linux bash shell sed

我正在尝试找到以下问题的解决方案:

我有两个文件:即file1和file2。 在file1中有一些带有一些关键词的行,我想通过使用关键词在file2中找到这些行。一旦找到file2中的关键字,我想用file1中同一行的内容更新这一行。应对file1中包含的每一行执行此操作。

只是我想到的一个例子,但我不确切知道如何在shell脚本命令中进行转换。

file1:

key1=new_value1
key2=new_value2
key3=new_value3
etc....

file2:

key1=value1
key2=value2
key3=value3
key4=value4
key5=value5
key6=value6
etc....


Result:

key1=new_value1
key2=new_value2
key3=new_value3
key4=value4
key5=value5
key6=value6
etc....

我不知道如何在shell脚本中使用'sed'或其他东西来完成此任务。 欢迎任何帮助。

谢谢

1 个答案:

答案 0 :(得分:1)

awk将是我的第一选择

awk -F= -v OFS== '
    NR==FNR {new[$1]=$2; next} 
    $1 in new {$2=new[$1]} 
    {print}
' file1 file2