grep 的引号、反斜杠与正则方言:一次讲清我踩过的坑

目录 1. 问题背景 1.1 先准备一份测试数据 1.2 第一条命令 2. 先记住一件事:你敲的字符,要过两道关卡 3. 疑惑一:引号加不加、加哪种,到底有没有区别 3.1 简单字符串:结果一样,但原因值得知道 3.2 包含空格:Shell 会把一个参数切成两个 3.3 包含通配符:Shell 会先把 *.txt 展开 3.4 包含变量 $:双引号会展开,单引号不会 3.5 三种写法小结 4. 疑惑二:/example/ 在 grep 里为什么不好使 4.1 现象 4.2 原因:/ 不是 grep 的定界符 4.3 顺带踩的大坑:命令敲下去"没反应" 4.4 续行符:\ 放在什么位置才不翻车 5. 疑惑三:都是反斜杠,为什么有的匹配有的不匹配 5.1 三方对照表 5.2 三条核心原则 6. 疑惑四:+ 在 BRE 和 ERE 里完全是两回事 6.1 打开 ERE 的开关是 -E 6.2 \d 为什么用不了:这是 -P 的事 7. 疑惑五:为什么两条不同的命令,结果一模一样 7.1 先看一个坑:字符集 [example]+ 7.2 分组 (example)+ 和字面量 example 7.3 照妖镜 -o:把藏起来的差别照出来 8. 疑惑六:grep -w 和 \b 是一回事吗 9. 疑惑七:grep 和 awk 的边界在哪 10. 总结与速查表 摘要:这篇文章记录我复习 Linux grep 时踩过的一串坑:引号加不加到底有没有区别、反斜杠什么时候生效什么时候被吃掉、/example/ 为什么在 grep 里不好使、命令敲下去为什么"没反应",以及 BRE / ERE / PCRE 三套方言的区别。全文按「现象 → 原因 → 结论」组织,一共 7 个疑惑,末尾附一张速查表。 ...

September 13, 2026 · 8 分钟 · 1500 字
本站访客 · 访问量