awk - 用第二个文件中的文本替换文件中的字符串
问题描述
我有两个文件如下
配置:
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
解决方案
您提供的是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]
推荐阅读
- python - 如何简化这些布尔语句
- lambda-calculus - 将 Lambda 项简化为范式
- java - 该应用程序在启动初始屏幕之前启动一个空白屏幕
- hugo - 在 Blogdown 中手动订购项目
- codeigniter - Codeigniter ion auth 用户管理同时创建一个新用户
- macos - 路径 /ASP.NET/Https 和 /Microsoft/UserSecrets)未在 OS X 上共享
- excel - 如何在 Powershell 中的 Excel 表格的总计行上设置 Sum?
- python - 重新组合熊猫 df 中的列值
- reactjs - 字符串比较是为 React-JSS 中的变体进行动态样式设置的正确方法吗?
- laravel-5 - 如何从 Laravel 5.7 自定义邮箱验证邮件?