确保在处理 awk 条件之前打开数据
Ensuring that opening data before awk condition is dealt with
我有 XML 其中包含:
</body></text></xml>
<?xml version="1.0" encoding="utf-8"><?xml-stylesheet type="text/xsl" href="stylesheetv1_1.xsl" ?><text><body>
我需要在每个 XML 声明处拆分文件。
我一直在尝试以下 awk 行,但它失败了,我不知道为什么。非常感谢收到任何帮助。
awk '/<?xml v/{filename=NR".xml"}; {print >filename}' sourcefile.xml
其中 sourcefile.xml 包含要拆分的数据。
我认为转义问号可能是个问题,但这似乎不是问题所在。
xml 标签前面有 \r\n
我正在为 Windows 使用 Gitbash。
我最终需要的是一堆单独的文件,所有文件都以
结尾
</body></text></xml>
并以
开头
<?xml version="1.0" etc
shell 响应 'expression for `>' 重定向具有空字符串值',但恐怕我不确定那是什么意思。我也根本没有输出文件。
你得到的错误意味着你重定向到一个文件指向一个未定义的文件名。您的 filename
变量在脚本执行期间的某个时刻为空。
尝试在 awk 脚本的 BEGIN 块中设置该文件名变量,以确保在您的第一个 "<?xml v"
匹配之前出现的记录有去处:
awk 'BEGIN{filename="prexmlgarbage.xml"} /<\?xml v/{filename=NR".xml"}; {print >filename}' sourcefile.xml
我还在问号前添加了一个转义字符,这样您就可以正确匹配字符串 <?xml v
如果您不想在第一个 "<?xml v"
命中之前捕获记录,您也可以在 print
块之前放置一个条件:
awk '/<\?xml v/{filename=NR".xml"}; filename!=""{print >filename}' sourcefile.xml
我有 XML 其中包含:
</body></text></xml>
<?xml version="1.0" encoding="utf-8"><?xml-stylesheet type="text/xsl" href="stylesheetv1_1.xsl" ?><text><body>
我需要在每个 XML 声明处拆分文件。
我一直在尝试以下 awk 行,但它失败了,我不知道为什么。非常感谢收到任何帮助。
awk '/<?xml v/{filename=NR".xml"}; {print >filename}' sourcefile.xml
其中 sourcefile.xml 包含要拆分的数据。
我认为转义问号可能是个问题,但这似乎不是问题所在。 xml 标签前面有 \r\n
我正在为 Windows 使用 Gitbash。
我最终需要的是一堆单独的文件,所有文件都以
结尾</body></text></xml>
并以
开头 <?xml version="1.0" etc
shell 响应 'expression for `>' 重定向具有空字符串值',但恐怕我不确定那是什么意思。我也根本没有输出文件。
你得到的错误意味着你重定向到一个文件指向一个未定义的文件名。您的 filename
变量在脚本执行期间的某个时刻为空。
尝试在 awk 脚本的 BEGIN 块中设置该文件名变量,以确保在您的第一个 "<?xml v"
匹配之前出现的记录有去处:
awk 'BEGIN{filename="prexmlgarbage.xml"} /<\?xml v/{filename=NR".xml"}; {print >filename}' sourcefile.xml
我还在问号前添加了一个转义字符,这样您就可以正确匹配字符串 <?xml v
如果您不想在第一个 "<?xml v"
命中之前捕获记录,您也可以在 print
块之前放置一个条件:
awk '/<\?xml v/{filename=NR".xml"}; filename!=""{print >filename}' sourcefile.xml