2
我有一個包含數百個地標的kml文件,我需要將每個地標移動到它自己的文件夾中。 在這個過程中,我需要能夠通過它的地標名稱來命名/重命名每個文件夾。 這可以通過使用awk,perl或sed來完成嗎?我不是一位XML專家。用KML文件中的文件夾標記包裹地標標記
KML是以下形式:
<Folder>
<name>TEST</name>
<open>1</open>
<Placemark>
<name>LOCATION ONE</name>
[...]
</Placemark>
<Placemark>
<name>LOCATION TWO</name>
[...]
</Placemark>
<Placemark>
<name>LOCATION ONE & TWO</name>
[...]
</Placemark>
</Folder>
,它需要是這樣的:
<Folder>
<name>TEST</name>
<open>1</open>
<Folder>
<name>LOCATION ONE</name>
<Placemark>
<name>LOCATION ONE</name>
[...]
</Placemark>
</Folder>
<Folder>
<name>LOCATION TWO</name>
<Placemark>
<name>LOCATION TWO</name>
[...]
</Placemark>
</Folder>
<Folder>
<name>LOCATION ONE & TWO</name>
<Placemark>
<name>LOCATION ONE & TWO</name>
[...]
</Placemark>
</Folder>
</Folder>
到目前爲止,我設法包裹每<placemark>
標籤通過<folder>
標籤使用下列AWK命令,但我需要能夠通過它的地標名稱重命名每個文件夾:
awk '/<Placemark>/{system("cat file1");next}1' file.kml
awk '/<\/Placemark>/{system("cat file2");next}1' file.kml
文件1:
<Folder>
<name>@@[email protected]@</name>
<Placemark>
文件2
</Placemark>
</Folder>
這太棒了!一切工作,沒有別的事情要做。 'tac file.xml | awk -f parse_kml.awk | tac | xmllint --format - > file.kml' – 2013-04-22 13:09:46
@ user2302372太好了! – 2013-04-22 13:13:52