用迭代器替换字符串

j0h*_*j0h 2 command-line bash text-processing

我有一个包含要替换的字符的文件,但我也希望替换字符的每个实例,并在 sting 替换中使用一个数字进行迭代。

一些文件.txt

[H
A
[H
B
[H
C
Run Code Online (Sandbox Code Playgroud)

我想用“ </pre></div><div id=cat$n><pre>”替换“[H”,其中 $n 是替换次数的迭代器。所以第一个替换将是 1、2、3、4、n++ 等等。

有没有办法做到这一点sed

cho*_*oba 5

Perl 来救援!

perl -pe 'BEGIN { $n = 1 } s%\[H%</pre></div><div id=cat$n><pre>% && $n++' filename
Run Code Online (Sandbox Code Playgroud)
  • -p 逐行读取输入并打印代码对其执行的任何操作
  • BEGIN { ... } 在进入程序之前运行
  • s%pattern%replacement%替换patternreplacement.
  • \[需要一个反斜杠,因为[它在正则表达式中很特殊
  • && $n++如果替换成功,则返回 true,因此运行下一个命令:并增加 counter $n