grep - 我怎么能用 grep 排除一行?
问题描述
对不起我的初学者问题:我想 grep .md 文件中的链接,除了一个特殊的行,它以一个特殊的词开头。
所以我的 index.md 看起来像:
[Test](202001-test)
BlaBla: [Test2]((202002-test2)
我的代码如下所示:
grep -Eo '\[.*\]\([2].*\)' ~/script/index.md
那么我应该写什么,那个 grep 忽略第二行?在正则表达式网站上找不到答案。
问候
解决方案
假设重点是匹配[...](2...)
不包含额外的子字符串,[
在]
方括号内和(
/)
在括号之间,如果你想避免匹配以 开头的字符串BlaBla:
,你可以考虑使用
grep -v '^BlaBla:' index.md | grep -o '\[[^][]*](2[^()]*)'
在这里,grep -v '^BlaBla:'
用 option 反转匹配-v
并输出所有不以 . 开头的行BlaBla:
。然后,第二个grep
获得必要的有效匹配。
POSIX BRE 模式细节
\[
- 一个[
字符[^][]*
[
- 除了and之外的零个或多个字符]
]
- 一个]
字符(2
- 一个(2
子串[^()]*
- 0 个或多个字符,而不是(
and)
)
- 一个)
字符。
见在线grep
演示:
s='[Test](202001-test)
BlaBla: [Test2]((202002-test2)'
grep -v '^BlaBla:' <<< "$s" | grep -o '\[[^][]*](2[^()]*)'
输出:
[Test](202001-test)
推荐阅读
- python - 尝试写入文件时出现 JSONDecodeError
- .net-core - .Net Core Npgsql Return Single Row
- c# - 以编程方式添加时,水印未显示在 XtraReport 中
- r - 堆叠条形图 ggplot2,具有比例和多个样本
- r - R 入门 - 编写循环和函数
- linux - 在 Linux 上获取用户模式可用的虚拟地址空间大小
- c++ - 使用另一个“int”作为参数使用“if”语句定义一个 int
- python - 更新 scikit-learn:“SVC”对象没有属性“_probA”?
- javascript - 如何将背景图像的 url 导入 css 文件?
- microsoft-graph-api - 图形文件上传 API - 图像已损坏