用 grep/sed 替换许多任意降价链接

Replace many arbitrary markdown links with grep/sed

我有一大套 markdown 文件需要检查并替换许多 links。每个需要替换的 link 前面都有相同的字符串,例如 Foo bar,然后是习惯性的降价 link 语法:[arbitrary name](address)。例如,

Foo bar [arbitrary link text](http://arbitrary.address.com)

我需要在 "Foo bar " 之后找到每个降价 link 并将括号中的地址更改为不同的 link,比如 foo.bar.com。问题是每个 link 都是不同的,并且必须保留任意 link 文本,所以我不能只是 grep 一个字符串并替换它。如何使用 grep 识别具有匹配模式的文件并使用 sed 替换 links?

您可以使用 find 命令。

find . -type f -exec sed -ri 's/\b(Foo bar +\[[^\]]*\]\()[^()]*\)/foo.bar.com)/g' {} \;