Vim解决方案

Vim解决方案

我有 400 多行 html,其中包含以下图像代码:

<a class='gallery' href="galimages/boards/board34.jpg" alt="board large"><image src ="galimages/boards/thumbs/34.jpg" alt="board thumb"></a>

第一批是棋盘图像,编号从 34 到 160。

有没有办法以编程方式对它们进行编号,因为除了数字之外,每行代码都是相同的?

我在 Centos 7 上,正常使用 vim 编辑器。

答案1

Vim解决方案

一些建议这里。我将创建数字列表,然后替换它们周围的其余字符串。我发现这个策略更容易,因为你需要每个数字两个。例如,在一个空文档中:

:put =range(34,160)
:%s,\(.*\),<a class='gallery' href="galimages/boards/board\1.jpg" alt="board large"><image src ="galimages/boards/thumbs/\1.jpg" alt="board thumb"></a>

注意,put第一行会创建一个空行,因此您必须手动删除它。

解释

  • :put =range(34,160):创建从 34 到 160 的一系列数字,每行一个。如前所述,这实际上以空行开始文档,因此请立即或稍后手动将其删除。
  • :%s,FOO,BAR:对整个文档(%)进行搜索并替换(s),替换FOOBAR
  • FOO: \(.*\)。替换整行 ( .*),但将内容(数字)存储到捕获组中,即\(...\).
  • BAR:根据需要替换为字符串,并在两个位置使用数字 ( \1),以创建最终的行。

壳牌解决方案

您可以在 shell 中使用类似的策略,而无需使用vim.

$ seq 34 160 | sed 's,\(.*\),<a class='\''gallery'\'' href="galimages/boards/board\1.jpg" alt="board large"><image src ="galimages/boards/thumbs/\1.jpg" alt="board thumb"></a>,'

解释

  • seq 34 160:创建从 34 到 160 的一系列数字,每行一个。
  • sed…: 替换如上。注意,因为我sed用 引用了参数',所以这个脚本用 转义了内联's '\''

相关内容