我有两个不同的文件:
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脚本? 速度或效率不是问题。
谢谢。
答案 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
值会覆盖=
周围的空白,以形成输入字段分隔符。输出字段分隔符在每一侧使用单个空格。