【发布时间】:2020-07-16 07:42:45
【问题描述】:
我有一个包含多个字符串 REPLACEME 实例的大型 XML 文件。在第二个文件中,我有一个字符串列表(包含逗号),例如:
58,-21,0
234,-38,0
我想用第二个文件中的一个值替换第一个文件中REPLACEME 的每个实例,然后转到下一个实例。
我看过 bash(sed、awk、perl)和 Powershell。有人告诉我不应该使用 for 循环,而是使用文件循环并重新解析文件。所以我尝试了这个:
file2=/file2.txt
while IFS= read -r line; do
printf '%s\n' "$line"
sed '0,/REPLACEME/s//$line/' /file1.xml
done < "$file2"
但它什么也没做。可能是因为 XML 文件有符号?它不会出错,只是什么都不做。
如果我能找到可以实现替换结果的东西,是否愿意完全放弃我的代码或切换解析器?
编辑: 要求提供 XML 的示例。 XML 标记是 KML 文件的一部分,字符串是坐标点。下面的例子:
<Placemark>
<name>5005</name>
<MultiGeometry>
<Polygon>
-snip-
</Polygon>
<Point>
<gx:drawOrder>1</gx:drawOrder>
<coordinates>REPLACEME</coordinates>
</Point>
</MultiGeometry>
</Placemark>
这个文件有数百个这样的条目,需要使用file2中列表中的对应坐标来填充。
【问题讨论】:
-
一个值是指
58,-21,0或58,-21,0等等? -
你需要把修改后的文件放在哪里1 - 把它写出来?还是更新当前文件1?
-
您已经展示了第二个文件的示例。您能否还显示 XML 文件的示例以及与此相对应的输出?
-
不,单值是“58,-21,0”。我认为符号和逗号可能会造成问题,所以我将它们包括在内。 XML 示例如下所示:
以上将是一个文件,其中包含 500 多个需要替换的条目。5000 REPLACEME