Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
Xml csplit-我做错了什么?_Xml_Unix_Utility_Csplit - Fatal编程技术网

Xml csplit-我做错了什么?

Xml csplit-我做错了什么?,xml,unix,utility,csplit,Xml,Unix,Utility,Csplit,我有一个.xml文件: <docs> <doc> Some text </doc> <doc> here some </doc> <doc> text here </doc> </docs> 一些文本 这里有一些 此处文本 我正在尝试使用csplit,以便只获取文本部分。这就是我想到的 $ csplit docs.xml '%^<docs>%1' '/^<\/doc/1' '{

我有一个.xml文件:

<docs>
<doc>
Some text
</doc>
<doc>
here some
</doc>
<doc>
text here
</doc>
</docs>

一些文本
这里有一些
此处文本
我正在尝试使用csplit,以便只获取文本部分。这就是我想到的

$ csplit docs.xml '%^<docs>%1' '/^<\/doc/1' '{*}'

$csplit docs.xml“%$%1”/^如果文件结构与您包含的类似,则可以通过执行
grep-v来提取内容“^这是可行的,但csplit会在标记之间创建不同的文件,对吗?Cat只是将其打印到终端。您可以将整个输出重定向到这样一个文件,如cat x | sed-e's/]*>//g'| grep-v'^$'>output.txt这样做的目的是拥有多个文本文件(文档),每个文件的内容都在标记之间。因此,第一个包含“一些文本”,第二个包含“此处一些”,第三个包含“此处文本”。这是可能的吗?如果您想使用csplit,它将分割xml而不是xml的主体,例如csplit x'/^/'{*},然后使用sed或grep筛选结果目录。。。例如,我只想创建文本文件(通过csplit),每个文件包含标签之间的相应文本。请你看看我的想法,告诉我错在哪里好吗?它告诉我它找不到“”。
cat doc.xml | egrep -v '<?xml version="1.0" \?>|<docs>|</docs>' | csplit -q -z - '/<doc/' '{*}' --prefix=out-