我发现awk命令能够将输入的xml文件拆分为多个xml文件,并且在Linux环境中效果很好。
awk 'BEGIN {NUM=0}; /xml version="1.0"/ {NUM++; filename=NUM"Output.xml"}; {print >filename}' Inputfile.xml
但是,我试图在Windows命令提示符下运行它,并收到以下语法错误。您知道如何修改此命令以在Windows上成功运行吗?
awk "BEGIN {NUM=0}; /xml version="1.0"/ {NUM++; filename=NUM"Output.xml"}; {print >filename}" Inputfile.xml
awk: BEGIN {NUM=0}; /xml version=1.0/ {NUM++; filename=NUMOutput.xml}; {print >filename}
awk: ^ syntax error
答案 0 :(得分:0)
您可以这样做:
awk 'BEGIN {NUM=0}; /xml version="1.0"/ {NUM++; filename=NUM "Output.xml"; print filename}; {print ^> filename}' Inputfile.xml
但是您的代码有问题,最好对此进行更改:
awk 'BEGIN {NUM=0; filename=NUM "Output.xml";}; /xml version="1.0"/ {NUM++; filename=NUM "Output.xml"; } {print ^> filename }' Inputfile.xml
filename
在代码遇到第一行xml version="1.0"
之前未初始化,它将引发错误。
因此,最好在BEGIN
块中对其进行初始化。
或者只是:
awk 'BEGIN {NUM=0} /xml version="1.0"/ {NUM++} {print ^> NUM "Output.xml"}' Inputfile.xml
否则,您的代码中仅需要>
进行转义,即在^
中添加cmd
。
在使用批处理文件中或awk
下的cmd
的过程中,我逐渐开始喜欢在awk代码之外使用单引号,并注意那些字符需要转义。 -双引号中的字符不需要转义,其他字符需要转义。
另一种选择(通常是更好的选择)是将代码保存在xcode1.awk
之类的文件中,并使用-f
之类的awk -f xcode1.awk Inputfile.xml
开关来调用它。