【发布时间】:2018-05-01 19:52:05
【问题描述】:
具体任务是使用 KML 文件的标头并将其插入到数百个没有标头的拆分 KML 数据文件中。
KML 标题是多行和特定间距。我发现我可以使用带有 'r' readfile 选项的 Sed 来获取包含标题的文件的内容。但是,当我使用 '1r' 插入数据时,标题会放在文件中,从第二行开始。 sed 似乎不允许我在之前插入“第 0 行”地址。插入模式可以工作,但我不能只获取保存在文件中的标题格式,并且需要编写整个标题的脚本。
#!/bin/bash
for i in ./Split/*;
do sed -i '1r KML_Header.txt' $i
done
KML 标头如下所示:
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2'xmlns:gx='http://www.google.com/kml/ext/2.2'>
<Document>
<Placemark>
<open>1</open>
<gx:Track>
<altitudeMode>clampToGround</altitudeMode>
带有标题的最终结果将如下所示:
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2'xmlns:gx='http://www.google.com/kml/ext/2.2'>
<Document>
<Placemark>
<open>1</open>
<gx:Track>
<altitudeMode>clampToGround</altitudeMode>
<when>2017-11-16T11:47:52Z</when>
<gx:coord>-97.8216659 30.481537499999998 261</gx:coord>
<when>2017-11-16T11:47:44Z</when>
<gx:coord>-97.8216137 30.481513600000003 259</gx:coord>
<when>2017-11-16T11:45:37Z</when>
<gx:coord>-97.8216659 30.481537499999998 261</gx:coord>
<when>2017-11-16T11:44:54Z</when>
<gx:coord>-97.82162970000002 30.481479699999998 261</gx:coord>
<when>2017-11-16T11:39:55Z</when>
但是,这是我目前最好的命令:
<when>2017-11-16T11:47:52Z</when>
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2'xmlns:gx='http://www.google.com/kml/ext/2.2'>
<Document>
<Placemark>
<open>1</open>
<gx:Track>
<altitudeMode>clampToGround</altitudeMode>
<gx:coord>-97.8216659 30.481537499999998 261</gx:coord>
<when>2017-11-16T11:47:44Z</when>
<gx:coord>-97.8216137 30.481513600000003 259</gx:coord>
<when>2017-11-16T11:45:37Z</when>
<gx:coord>-97.8216659 30.481537499999998 261</gx:coord>
<when>2017-11-16T11:44:54Z</when>
<gx:coord>-97.82162970000002 30.481479699999998 261</gx:coord>
<when>2017-11-16T11:39:55Z</when>
【问题讨论】:
-
有很多方法可以做到这一点,例如这里:superuser.com/questions/246837/… 或 stackoverflow.com/questions/9533679/…