使用bash(最好是sed命令)从Markdown(md)文件中删除图像和链接标记

5
我有一些 Markdown (.md) 文件,存在 Git Wiki 上,现在需要转换为 HTML。但我不想在 HTML 文件中包含图片和链接。我们的 Markdown 图片看起来像这样:
![Alt text](/path/to/img.jpg "Optional title")

而我们的Markdown链接看起来像:

[I'm an inline-style link](https://www.google.com)

唯一的不同之处在于'!'字符。我正在编写一个 shell 脚本来完成所有操作。有哪些 bash 命令可以删除整个图像和链接标记?以下是一个更基本的 sed 堆栈问题: 如何删除方括号及其中的任何文本? 附注:你能在回答中包含一个笑脸吗?我很累,想回家了。

你想要删除整行"I'm an inline-style link"或者方括号中的文本。 - Varun
理想情况下,不是整行代码。 - Jordan Stewart
1个回答

3
这应该会将它们都删除:
$ sed 's/\!\{0,1\}\[[^]]*\]([^)]*)//g' file.md

这也可以工作,但是...请看下面potong的评论:
$ sed 's/!\?\[.*\](.*)//g' file.md

echo '![123](foo)' | sed 's/\!\{0,1\}\[[^]]*\]([^)]*)//g' 可以运行!非常感谢! - Jordan Stewart
第二种解决方案可能会删除更多的内容,因为它使用了 .*,这是贪婪的。例如,如果同一行上存在两个链接,它们之间有其他文本,那么这些文本也将被删除。 - potong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接