linux:正则表达式
差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
| linux:正则表达式 [2022/12/28 11:37] – [1.2 匹配非] zhangguo | linux:正则表达式 [2026/10/13 22:51] (当前版本) – 外部编辑 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ====== | + | # - 正则表达式 |
| 参考book: The Linux Command Line | 参考book: The Linux Command Line | ||
| 行 8: | 行 8: | ||
| POSIX Basic Vs. Extended Regular Expressions叫做ERE, -- egrep使用的, | POSIX Basic Vs. Extended Regular Expressions叫做ERE, -- egrep使用的, | ||
| - | ===== - BRE ===== | + | ## - BRE |
| - | + | ||
| ERE和BRE都支持以下符号: | ERE和BRE都支持以下符号: | ||
| ^ $ . [ ] * | ^ $ . [ ] * | ||
| 行 16: | 行 14: | ||
| 上面这几个符号默认当特殊功能符号,如果需要匹配这些符号,需要在前面加\转义。 | 上面这几个符号默认当特殊功能符号,如果需要匹配这些符号,需要在前面加\转义。 | ||
| - | ==== - 正常匹配 | + | ### - 正常匹配 |
| - | < | + | ```bash |
| $ echo "haha [i889" | grep " | $ echo "haha [i889" | grep " | ||
| 行 62: | 行 60: | ||
| $ echo "haha i89" | grep " | $ echo "haha i89" | grep " | ||
| haha i89 | haha i89 | ||
| + | ``` | ||
| + | ### - 匹配非 | ||
| - | + | ```bash | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | ==== - 匹配非 ==== | + | |
| - | + | ||
| - | < | + | |
| $ echo "haha [i8899" | $ echo "haha [i8899" | ||
| haha [i8899 | haha [i8899 | ||
| 像这种情况下,匹配到的是haha [i, 当前行还是被匹配到的。如果不想匹配带89的行,需要在grep的参数加上-v选项。 | 像这种情况下,匹配到的是haha [i, 当前行还是被匹配到的。如果不想匹配带89的行,需要在grep的参数加上-v选项。 | ||
| - | </ | + | ``` |
| - | ==== - grep选中不匹配的行 | + | |
| + | ### - grep选中不匹配的行 | ||
| grep -v选项的解释 | grep -v选项的解释 | ||
| - | < | + | |
| + | ``` | ||
| -v, --invert-match | -v, --invert-match | ||
| Invert the sense of matching, to select non-matching lines. | Invert the sense of matching, to select non-matching lines. | ||
| - | </ | + | ``` |
| - | <code bash> | ||
| - | $ echo "haha [i8899" | ||
| - | </ | ||
| - | ===== - ERE增强 ===== | + | ```bash |
| + | $ echo "haha [i8899" | ||
| + | ``` | ||
| + | ## - ERE增强 | ||
| ERE支持BRE的所有规则,另外ERE比BRE多添加了对以下符号的支持: | ERE支持BRE的所有规则,另外ERE比BRE多添加了对以下符号的支持: | ||
| ( ) { } ? + | | ( ) { } ? + | | ||
| 行 100: | 行 96: | ||
| 注意: | 注意: | ||
| - | < | + | |
| + | ```bash | ||
| $ echo "haha [i889" | grep -E " | $ echo "haha [i889" | grep -E " | ||
| 行 115: | 行 112: | ||
| $ echo "haha) [i889" | grep -E " | $ echo "haha) [i889" | grep -E " | ||
| haha) [i889 | haha) [i889 | ||
| + | ``` | ||
| - | </ | ||
| - | < | + | ``` |
| {n} Match the preceding element if it occurs exactly n times. | {n} Match the preceding element if it occurs exactly n times. | ||
| {n,m} Match the preceding element if it occurs at least n times, but no | {n,m} Match the preceding element if it occurs at least n times, but no | ||
| 行 126: | 行 123: | ||
| {n,} Match the preceding element if it occurs n or more times. | {n,} Match the preceding element if it occurs n or more times. | ||
| {,m} Match the preceding element if it occurs no more than m times. | {,m} Match the preceding element if it occurs no more than m times. | ||
| - | </code> | + | ``` |
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ## - sed命令 | ||
| + | |||
| + | ```bash | ||
| + | |||
| + | sed 's/regexp/ | ||
| + | |||
| + | # regexp expand方式的匹配,可以理解为ERE | ||
| + | sed -r ' | ||
| + | |||
| + | # 和上面效果一样,是普通的regexp, | ||
| + | sed ' | ||
| + | |||
| + | |||
| + | # -i, 将替换后的结果写回原文件中 | ||
| + | sed -i ' | ||
| + | ``` | ||
| + | |||
| + | |||
linux/正则表达式.1672198656.txt.gz · 最后更改: (外部编辑)
