【发布时间】:2021-06-30 10:43:50
【问题描述】:
我有一个文件,它的某些行上有一个特定的字符串,采用[Name](./path_to_name_directory) 或[Name](./path_to_name_directory/notes.md) 的形式,每个都有一些不重要的列表项。对于没有在括号内的文件路径末尾有notes.md 的行,Name 被添加到该行的前面。
为了尝试解决这个问题,我最初有以下命令
sed 's/\[(.*)\]\(\.\/.*\/(?!notes\.md)/\1&/g' ./file.md
但我最终发现 sed 不支持前瞻或后瞻,所以我转而使用 perl 来尝试完成同样的工作。我以为它会像做一样简单
perl -pe 's/\[(.*)\]\(\.\/.*\/(?!notes\.md)/\1&/g'
但它不起作用,我不完全确定从这里去哪里。
编辑 1:
示例输入文件:
- [Name 1](./path_to_name_1)
- Unimportant list item.
- [Name 2](./path_to_name_2/notes.md)
- Unimportant list item.
示例输出文件:
- Name 1 [Name 1](./path_to_name_1)
- Unimportant list item.
- [Name 2](./path_to_name_2/notes.md)
- Unimportant list item.
【问题讨论】:
-
请提供示例输入文件和所需的输出。
-
stackoverflow.com/questions/9053100/… 查看此答案作为解决方法:您可以使用 sed 规则来匹配以“notes.md”结尾且不执行任何操作的行,以及匹配剩余内容并执行某些操作的规则.
-
@Shawn,抱歉。我在编辑中添加了示例输入和示例输出。
-
@Kalcifer,我会要求您在答案中添加您的代码(您提出的),是的,提问者也可以回答他们的问题。通过这样做,您可以保持您的问题清晰(您可以编辑您的问题并使其与被询问的方式相似以避免混淆;因为有一个可用的答案部分),谢谢。