多行追加/替换前的sed模式搜索

暴动

我有运行它们的服务器和服务的列表,希望将服务器名作为前缀附加到以下服务

考虑以下输入

"SERVER": "us-east-1e-421"
"SERVICES.SNMP.STATUS": "ok"
"SERVICES.NTP.LATENCY": "1.644"
"SERVICES.POSTFIX.STATUS": "ok"
"SERVER": "us-west-1c-353"
"SERVICES.SNMP.STATUS": "ok"
"SERVICES.NTP.STATUS": "ok"
"SERVICES.NTP.LATENCY": "1.541"
"SERVICES.RSYNC.STATUS": "ok"
"SERVICES.NGINX.STATUS": "ok"

所以我想要的是

us-east-1e-421 SERVICES.SNMP.STATUS ok
us-east-1e-421 SERVICES.NTP.LATENCY 1.644
us-east-1e-421 SERVICES.POSTFIX.STATUS ok
us-west-1c-353 SERVICES.SNMP.STATUS ok
us-west-1c-353 SERVICES.NTP.STATUS ok
us-west-1c-353 SERVICES.NTP.LATENCY 1.541
us-west-1c-353 SERVICES.RSYNC.STATUS ok
us-west-1c-353 SERVICES.NGINX.STATUS ok

我对单行或基本搜索/替换的基本sed没问题,并且我尝试阅读一些之前发布的sed指南,例如https://docstore.mik.ua/orelly/unix/sedawk/appa_03.htm,但这是据我所知,需要帮助

sed'/([[az] -[az] -[a-z0-9] -[0-9])/ N; s / \ n“ / \ 1 / g'

罗曼·佩列赫雷斯特(RomanPerekhrest)

替代awk解决方案:

awk -F': ' '{ gsub(/"/,"") }/SERVER/{ s=$2; next }{ print s, $1, $2 }' file

输出:

us-east-1e-421 SERVICES.SNMP.STATUS ok
us-east-1e-421 SERVICES.NTP.LATENCY 1.644
us-east-1e-421 SERVICES.POSTFIX.STATUS ok
us-west-1c-353 SERVICES.SNMP.STATUS ok
us-west-1c-353 SERVICES.NTP.STATUS ok
us-west-1c-353 SERVICES.NTP.LATENCY 1.541
us-west-1c-353 SERVICES.RSYNC.STATUS ok
us-west-1c-353 SERVICES.NGINX.STATUS ok

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章