我有 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
),替换FOO
为BAR
。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'\''
。