这个 sed 命令有什么作用?如何改变呢?

这个 sed 命令有什么作用?如何改变呢?

我不明白这个命令的作用:

 grep '<span id="geodata" class="geo">[-0-9.]*; [-0-9.]*</span>' -R articles/ --only-matching | sed 's@articles//@@' | sed 's@:<span id=.geodata. class=.geo.>@ @' | sed 's@; @ @' | sed 's@</span>@@' | sort -u -b -k1 > geocodes_from_html.txt

一些背景:我正在处理维基文章,我有一个充满它们的文件夹(“文章”)。处理脚本是几年前编写的,当时某个地方的地理信息通常是这样的:

   <span id="geodata" class="geo">[-0-9.]*; [-0-9.]*</span>

现在看起来是这样的:

  <abbr class="latitude">[-0-9.]*</abbr><abbr class="longitude">[-0-9.]*</abbr>

我需要进行哪些更改才能使该命令正常工作?

答案1

提供的命令在目录 中的任何文件中grep搜索该字符串。以下命令正在替换几个字符串。<span [...]</span>articlessed

例如sed s@articles/@@(与一个斜杠 /仅)可以读作:sed search@this_string@replace_with_this@;该字符串articles/将被替换为任何内容。您可以将所有脚本合并到一个具有相同结果的脚本中,而不是从一个脚本传递sed到下一个脚本。

如果您不想使用任何其他命令来提取坐标,您可以使用:

grep '<abbr class="latitude">[-0-9.]*</abbr><abbr class="longitude">[-0-9.]*</abbr>' -R articles --only-matching | sed 's@articles/@@;s@:<abbr class="latitude">@ @;s@<abbr class="longitude">@ @;s@</abbr>@@g' | sort -u -b -k1 >geocodes_from_html.txt

相关内容