Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json bash:将管道流拆分为记录,并将记录中的所有行合并为一行_Json_Xml_Bash_Awk - Fatal编程技术网

Json bash:将管道流拆分为记录,并将记录中的所有行合并为一行

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="..."

我有一个文件,其中包含一百万个单独的xml文件(简单地连接起来),我想将其转换为json。该文件如下所示:

<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
一起工作,并避免给出第一个空结果。我尝试使用结束标记作为记录分隔符,但不知何故无法使其工作,因此这非常有用。