我有xml格式的配置文件,我想将其转换为用于防火墙配置的设置命令。
<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,无法获得所需的输出,有人可以帮忙吗?
答案 0 :(得分:0)
这将为您提供帮助。只要您输入的内容与您发布的内容完全一样,它将起作用。 无论如何,如 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" " }'
致谢!
答案 1 :(得分:0)
使用sed
和paste
,您可以做到:
sed -n 's/.*entry name="\([^"]*\)".*/set address \1/p;
s/.*<ip-netmask>\([^<]*\)<.*/ip-netmask \1/p' inputfile |\
paste -d ' ' - -