首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sed/awk将XML转换为文本

使用sed/awk将XML转换为文本
EN

Stack Overflow用户
提问于 2018-08-14 00:28:31
回答 2查看 836关注 0票数 0

我有一个xml格式的配置文件,我想把它转换成防火墙配置的set命令。

代码语言:javascript
复制
        <entry name="server1">
            <ip-netmask>1.1.1.1</ip-netmask>
            <description>server1</description>
        </entry>
        <entry name="server2">
            <ip-netmask>2.2.2.2</ip-netmask>
            <description>server2</description>
        </entry>

想要转换为

代码语言:javascript
复制
set address server1 ip-netmask 1.1.1.1
set address server2 ip-netmask 2.2.2.2

即使是server1 1.1.1.1,我也可以尝试使用echo来更改它们,尝试使用sed和awk,但无法获得所需的输出,有人能帮助我吗?

EN

回答 2

Stack Overflow用户

发布于 2018-08-14 01:26:51

这会对你有帮助。只要您的输入与您发布的内容完全相同,它就会起作用。无论如何,正如daniu所提到的,请使用特定的工具来完成此任务:

代码语言:javascript
复制
 sed 's/^ *//g' input.txt | grep -E -v '^(<entry name|</entry)' | sed -E 's#</?(i|d)[a-zAZ-]+>##g' | awk  'BEGIN {ORS=""} !/^ *$/ { if (ticks == 2) { print "\n" ; ticks = 0}; print $1" "; ticks++}' | awk '{ print "set address "$2 " ip-mask "$1" " }'

致以问候!

票数 0
EN

Stack Overflow用户

发布于 2018-08-14 02:04:49

使用sedpaste,您可以执行以下操作:

代码语言:javascript
复制
sed -n 's/.*entry name="\([^"]*\)".*/set address \1/p;
        s/.*<ip-netmask>\([^<]*\)<.*/ip-netmask \1/p' inputfile |\
        paste -d ' ' - -
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51826765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档