在 bash 中,如何使用动态替换替换文件中的字符串
In bash, how do a replace a string in a file with a dynamic replacement
具体来说,我有一个 Markdown 文档,其中列出了数字
```

...

```
我想以以下结尾:
```

...

```
即单调递增的数字。令我印象深刻的是,有些 sed/awk 忍者可以解决这个问题。
我会说
awk '/^!\[Figure/ { sub(/XXX/, ++n) } 1' filename.md
这将用 运行 计数器替换所有以 
...

```
我想以以下结尾:
```

...

```
即单调递增的数字。令我印象深刻的是,有些 sed/awk 忍者可以解决这个问题。
我会说
awk '/^!\[Figure/ { sub(/XXX/, ++n) } 1' filename.md
这将用 运行 计数器替换所有以 ![Figure
开头的行中第一次出现的 XXX
。
如果![Figure
序列也可以出现在一行的中间,并且可能在一行中出现多次(我不认为这是可能的,但为了完整起见,让我们考虑这种情况), 你可以使用
awk 'BEGIN { n = 1 } { while(sub(/!\[Figure XXX/, "![Figure " n)) ++n; } 1' filename.md