我有以下两个文件
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
答案 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]