以下是我的 XML 文件的摘录:
<Value ProtectInMemory="True"> ytznnyg</Value><Value>arulmdbqtza01 </Value><Value>arulmrms </Value><Value>sys/system</Value>
<Value ProtectInMemory="True">kylfpo8</Value><Value>arulmdbqtza02 </Value><Value>arulmrib </Value><Value>sys/system </Value>
<Value ProtectInMemory="True" /><Value>arulmdbsoaa01 </Value><Value>arulmsoa</Value><Value />
<Value ProtectInMemory="True" /><Value>arulmdbsoaa01 </Value><Value>srulmsoa</Value><Value />
我现在想要的:
ytznnyg;arulmdbqtza01;arulmrms;sys/system
kylfpo8;arulmdbqtza02;arulmrib;sys/system
;arulmdbsoaa01;arulmsoa;
;arulmdbsoaa01;srulmsoa;
最好的办法是在 4 个不同的变量中用分号分隔值
令人惊奇的是有这样的输出:
connect sys/ytznnyg@arulmdbqtza01:1521/arulmrms as sysdba @coucou.sql
disconnect
connect system/ytznnyg@arulmdbqtza01:1521/arulmrms @coucou.sql
disconnect
connect sys/kylfpo8@arulmdbqtza02:1521/arulmrib as sysdba @coucou.sql
disconnect
connect system/kylfpo8@arulmdbqtza01:1521/arulmrib @coucou.sql
disconnect
connect /@arulmdbsoaa01:1521/arulmsoa as sysdba @coucou.sql
disconnect
connect /@arulmdbsoaa01:1521/arulmsoa @coucou.sql
disconnect
connect /@arulmdbsoaa01:1521/srulmsoa as sysdba @coucou.sql
disconnect
connect /@arulmdbsoaa01:1521/srulmsoa @coucou.sql
disconnect
答案1
bash
是一个shell,一种解释命令行和运行命令的工具。您需要调用命令或其他命令来完成这项工作。这里用于xmlstarlet
进行 XSLT 处理:
sed '1s|^|<x>|;$s|$|</x>|' < your-file.xml |
xmlstarlet sel -t -v '//Value' |
tr -d ' ' |
paste -sd ';;;\n' -
上面是并行运行 4 个命令来执行作业的代码bash
(实际上,它是 Bourne 或 POSIX shell 代码,因此它可以在所有类似 Bourne 的 shell 中解释,而不仅仅是)。bash
其中,sed
、tr
和paste
是标准 POSIX 命令,因此可以在大多数 Unices 上找到。xmlstarlet
你可能需要安装。