使用bash递归批量删除markdown(md)文件中的链接标签

时间:2019-01-17 22:40:06

标签: bash shell sed markdown

我在目录及其子目录中有一些markdown文件(* .md)。我想删除所有链接标签,仅保留其锚文本。我不想删除图像标签。

所以我有类似

的文字
a text containing [a link](https://example.com) and an image
![](image.jpg) 

我想把它变成:

a text containing a link and an image
![](image.jpg) 

我想尝试this method,但它会删除图像。

1 个答案:

答案 0 :(得分:0)

使用sed,可以进行以下操作:

find . -type f -name '*.md' -print0 | xargs -0 sed -i -E 's/(^|[^!])\[(.*?)\]\(.*?\)/\1\2/g'

如果Perl可用,请尝试以下操作:

find . -type f -name '*.md' -print0 | xargs -0 perl -pe 's/(?<!!)\[(.*?)\]\(.*?\)/$1/g' -i

正则表达式中的片段(?<!!)negative lookbehind,并且 这样可以防止正则表达式匹配以!开头的子字符串。