我有一个xml格式的配置文件,我想把它转换成防火墙配置的set命令。
<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>想要转换为
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,但无法获得所需的输出,有人能帮助我吗?
发布于 2018-08-14 01:26:51
这会对你有帮助。只要您的输入与您发布的内容完全相同,它就会起作用。无论如何,正如daniu所提到的,请使用特定的工具来完成此任务:
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" " }'致以问候!
发布于 2018-08-14 02:04:49
使用sed和paste,您可以执行以下操作:
sed -n 's/.*entry name="\([^"]*\)".*/set address \1/p;
s/.*<ip-netmask>\([^<]*\)<.*/ip-netmask \1/p' inputfile |\
paste -d ' ' - -https://stackoverflow.com/questions/51826765
复制相似问题