用第二个文件中的文本替换文件中的字符串

时间:2018-12-28 22:21:41

标签: awk

我有以下两个文件

config:

which [box-address]
  Command ssh user[box2-address] 

地址:

192.168.0.10

我想用“地址”中的内容替换“配置”中的[box-address]

我能够插入内容,但是每次都覆盖整个配置文件,所以代替

which 192.168.0.10
  Command ssh user 192.168.0.20

我最终得到

192.168.0.10

是文件中唯一的内容

我在做什么错

awk '/\[box-address\]/{system("cat config");next}1' address > config

1 个答案:

答案 0 :(得分:0)

您要提供address而不是config作为awk的输入。它永远不会匹配/\[box-address\]/。您的命令实际上只是用config的内容覆盖address

以下方法应满足您的要求,它将address的内容读入BEGIN块中的变量,然后用它替换[box-address]的任何实例:

awk 'BEGIN{getline l < "address"}/\[box-address\]/{gsub(/\[box-address\]/,l)}1' config

结果:

which 192.168.0.10
  Command ssh user[box2-address]