我正在寻找一个 sed 命令来清理我拥有的一些 kml 文件。这些文件都在一行上,看起来像这样
<some text><kml><Document><name> Name </name><Placemark><name> Hotel 01 </name></Placemark><Placemark><name> Hotel 02 </name></Placemark><Placemark><name> Hotel 03 </name></Placemark></Document></kml>
理想情况下,我只希望从第一个<Placemark>
元素开始(包括)到最后一个(包括)</Placemark>
元素的部分,以及所有 kml 文件中的这些部分输出到单个文件。
我很乐意使用删除第一个之前的所有文本<Placemark>
并删除最后一个之后的所有文本</Placemark>
的命令,或者一个提取第一个之后<Placemark>
和最后一个之前的内容的命令</Placemark>
。
到目前为止,我设法搞砸的一个命令是:
find . -name 'kmlFiles00*' -exec sed -r 's/^.{879}/ /' {} \; | sed -e 's/<\/Document><\/kml>//g' > placemarks_`date +%d-%m-%Y`.list
它已经消除了前 879 个字符,然后在将</Document></kml>
其全部输出到最终文件中之前删除了所有实例,但这非常混乱,所以我正在寻找一个更干净的命令。我也试过
sed -e 's/^.*<Placemark> //' -e 's/<\/Placemark>.*$//'
我知道越来越近但仍然失败