Json bash:将管道流拆分为记录,并将记录中的所有行合并为一行
我有一个文件,其中包含一百万个单独的xml文件(简单地连接起来),我想将其转换为json。该文件如下所示:Json bash:将管道流拆分为记录,并将记录中的所有行合并为一行,json,xml,bash,awk,Json,Xml,Bash,Awk,我有一个文件,其中包含一百万个单独的xml文件(简单地连接起来),我想将其转换为json。该文件如下所示: <amf xmlns="..."> <test> 1 content </test> </amf> <amf xmlns="..."> <test> 2 content </test> </amf> 其中: 1<amf xml 2<amf xmlns="..."
<amf xmlns="...">
<test>
1 content
</test>
</amf>
<amf xmlns="...">
<test>
2 content
</test>
</amf>
其中:
1<amf xml
2<amf xmlns="...">
<test>
1 content
</test>
</amf>
3<amf xmlns="...">
<test>
2 content
</test>
</amf>
1添加$1=$1
似乎解决了我的问题:
awk '{$1=$1; print NR "<amf xml"$0}' RS="<amf xml" bigfile.xml
awk'{$1=$1;print NR“添加$1=$1
似乎解决了我的问题:
awk '{$1=$1; print NR "<amf xml"$0}' RS="<amf xml" bigfile.xml
awk'{$1=$1;使用GNU awk打印NR”用于多字符RS和RT:
$ awk -v RS='</amf>\n' '{$1=$1; ORS=RT}1' file
<amf xmlns="..."> <test> 1 content </test></amf>
<amf xmlns="..."> <test> 2 content </test></amf>
$awk-vrs='\n'{$1=$1;ORS=RT}1'文件
1内容
2内容
带GNU awk的多字符RS和RT:
$ awk -v RS='</amf>\n' '{$1=$1; ORS=RT}1' file
<amf xmlns="..."> <test> 1 content </test></amf>
<amf xmlns="..."> <test> 2 content </test></amf>
$awk-vrs='\n'{$1=$1;ORS=RT}1'文件
1内容
2内容
试试这个
$ awk -v RS='<amf xml' 'NF{$1=$1; print RS $0}' file
$awk-vrs='试试这个
$ awk -v RS='<amf xml' 'NF{$1=$1; print RS $0}' file
$awk-v RS='将文件包装成..
并使用xml2json
。谢谢你,@choroba,我试过了,但是xml2json退出了,但出现了错误。可能是因为文件包含大约1000万行,所以xml2json在处理时遇到了问题。然后我会使用pull或SAX解析器。将文件包装成..
并使用xml2json
。谢谢,@choroba,我试过了,但xml2json退出时出错了。可能是因为文件包含大约1000万行,所以xml2json在处理时遇到了问题。然后我会使用pull或SAX解析器。这在OSX上与gawk
一起工作,并避免给出第一个空结果。我尝试使用结束标记作为记录分隔符r、 但不知何故无法使其工作,因此这非常有用。这与OSX上的gawk
一起工作,并避免给出第一个空结果。我尝试使用结束标记作为记录分隔符,但不知何故无法使其工作,因此这非常有用。