sed脚本读取file1并在file2中搜索和替换

时间:2015-11-18 22:15:57

标签: replace sed

我有两个不同的文件:

File1包含:

idd = home_mine
password = my_password

File2包含:

// some generic information
otherfields = generic 
idd = generic_id 
psk = generic_password 
last_fields = generic_last

我想替换' iid'在file2中包含 idd 的文件中。

我想替换' psk'在文件2中,文件1中包含密码。 (我希望file1密码字段与psk不同。)

这样file2将如下所示:

//some generic info
otherfields = generic 
iid = home_mine 
psk = my_password 
last_fields = generic_last

是否有可以执行此操作的sed脚本? 速度或效率不是问题。

谢谢。

1 个答案:

答案 0 :(得分:1)

我使用awk:

awk -F '[[:blank:]]*=[[:blank:]]*' -v OFS=" = " '
    NR == FNR {my_val[$1] = $2; next} 
    $1 == "iid" {$2 = my_val["idd"]}       # is the key "idd" or "iid"?
    $1 == "psk" {$2 = my_val["password"]} 
    {print}
' file1 file2

复杂的-F值会覆盖=周围的空白,以形成输入字段分隔符。输出字段分隔符在每一侧使用单个空格。