使用正则表达式高级应用 Grep
使用“grep”应用复杂的正则表达式,在文件中执行高度精准且高效的文本搜索。
使用正则表达式高级应用 Grep 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
Grep 的正则表达式超能力
欢迎学习使用正则表达式的高级 Grep!在上一课中,我们学习了正则表达式本身。现在,让我们在强大的 grep 命令中释放它们的全部潜力。
grep 是搜索文件中文本模式的常用工具。将它与高级正则表达式结合后,无论模式多么复杂,您都可以精确定位所需内容。
启用扩展正则表达式(-E)
默认情况下,grep 使用基本正则表达式(BRE)。要使用 +、?、| 和 () 等更高级的功能,我们需要启用扩展正则表达式(ERE)。
您可以使用 -E 选项,或使用 egrep 命令来实现这一点;后者本质上就是 grep -E。让我们创建一个用于练习的示例文件:
echo "apple
banana
appanana
orange
app" > fruits.txt量词:一次或多次(+)
+ 量词可以匹配前面字符或分组出现一次或多次的情况。当您预计某个模式至少重复一次时,它非常有用。
例如,要查找包含字母 'p' 后跟一个或多个 'a' 的行,可以使用 pa+。
grep -E 'pa+' fruits.txt量词:零次或多次(*)
* 量词可以匹配前面字符或分组出现零次或多次的情况。当某个字符可能存在但并非必须存在时,这很有用。
让我们查找包含字母 'b' 后跟零个或多个 'a' 的行:
grep -E 'ba*' fruits.txt量词:零次或一次(?)
? 量词可以匹配前面字符或分组出现零次或一次的情况。您可以把它理解为让字符变为可选。
想同时查找 'color' 和 'colour' 吗?您可以让 'u' 变为可选:
echo "color
colour
coor" > words.txt
grep -E 'colou?r' words.txt使用 {} 指定次数(花括号)
如果需要更精确的控制,您可以使用花括号 {} 指定确切次数或次数范围:
a{3}:恰好出现三个 'a'。a{2,}:出现两个或更多 'a'。a{1,3}:出现一到三个 'a'。
让我们查找字母 'a' 恰好重复两次的行:
grep -E 'a{2}' fruits.txt锚点:开头和结尾(^、$)
锚点不匹配字符,而是匹配位置。^ 锚点匹配一行的开头,$ 匹配一行的结尾。
这对于确保模式匹配整行,或确保从您指定的准确位置开始或结束,至关重要。
^apple:以 'apple' 开头的行。banana$:以 'banana' 结尾的行。^apple$:只包含 'apple' 的行。
grep -E '^app' fruits.txt使用 OR 进行交替匹配(|)
|(竖线)符号充当 OR 运算符。它允许您匹配一个模式或另一个模式。这对于同时搜索多个不同的单词或短语非常有用。
例如,要查找包含 'apple' 或 'orange' 的行:
grep -E 'apple|orange' fruits.txt使用 () 对模式分组
圆括号 () 用于对正则表达式的部分内容进行分组。这样,您就可以将量词或交替匹配应用于整个分组,而不只是单个字符。
例如,要查找 'b' 后面出现一次或多次的 'ana':
grep -E 'b(ana)+' fruits.txt快速检查:高级 Grep
给定文件 data.txt,其内容如下:
cat
cats
catt
catterpillar
dog
哪个命令可以正确查找包含 'cat' 后跟零个或多个 't' 的行?
回顾:Grep 的正则表达式能力
您已经掌握了使用扩展正则表达式的高级 grep 技巧!我们学习了:
- 使用
-E实现扩展正则表达式功能。 - 量词:
+(一次或多次)、*(零次或多次)、?(零次或一次)以及用于指定次数的{}。 - 锚点:
^(行的开头)和$(行的结尾)。 - 使用交替符号
|表示 OR 条件。 - 使用
()对模式进行分组。
这些工具可以帮助您执行极其精确且灵活的文本搜索,让您真正成为命令行高手!
常见问题解答
「使用正则表达式高级应用 Grep」课时是免费的吗?
是的 — 「使用正则表达式高级应用 Grep」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「使用正则表达式高级应用 Grep」这节课中我会学到什么?
使用“grep”应用复杂的正则表达式,在文件中执行高度精准且高效的文本搜索。 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「使用正则表达式高级应用 Grep」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 正则表达式简介(Regex)
- 使用正则表达式高级应用 Grep
- 结合正则表达式使用 sed/awk
- 捕获组、反向引用与替换