目录
[行首匹配 - 查找以指定字符串开头的行](#行首匹配 - 查找以指定字符串开头的行)
[行尾匹配 - 查找以指定字符串结尾的行](#行尾匹配 - 查找以指定字符串结尾的行)
[任意字符 - 查找以"T"开头,第二个字符任意,第三个字符是"h"的模式](#任意字符 - 查找以"T"开头,第二个字符任意,第三个字符是"h"的模式)
[重复字符 - 查找包含 0 个或多个指定字符的行](#重复字符 - 查找包含 0 个或多个指定字符的行)
[字符集 - 查找包含 a、b 或 c 的行](#字符集 - 查找包含 a、b 或 c 的行)
[字符范围 - 查找包含小写字母的行](#字符范围 - 查找包含小写字母的行)
[排除字符集 - 查找不包含 a、b、c 的行](#排除字符集 - 查找不包含 a、b、c 的行)
基本正则表达式(BRE)
行首匹配 - 查找以指定字符串开头的行
grep "^This" file.txt
表示在file.txt文件中匹配以 This 开头行
详细解释 :
• ^:行首锚点 (grep默认是处理行的)
• 匹配以"This"开头的行
• 不匹配行中间的"This"
行尾匹配 - 查找以指定字符串结尾的行
grep "file\." file.txt
表示在file.txt文件中匹配以file.结尾的行

**详细解释** :
• \\.:转义点号,匹配字面意义的"."(否则.匹配任意字符)

在这个示例中如果给 . 不加 / 转义字符,则 . 表示一个任意字符,则这条命令表示匹配以file再跟一个任意字符结尾的行
• :行尾锚点
• 匹配以"file."结尾的行
任意字符 - 查找以"T"开头,第二个字符任意,第三个字符是"h"的模式
grep "T.h" file.txt
在file.txt文件中匹配包含以T开始,以h结尾的长度为3字符的行
详细解释 :
• .:匹配任意单个字符(换行符除外)
• 匹配"Thh"、"Tah"、"T h"等
• 三个字符的模式:T + 任意字符 + h
重复字符 - 查找包含 0 个或多个指定字符的行
grep "a*" file.txt
在file.txt文件中查找包含0个或多个a字符的行
详细解释 :
• *:匹配前面的字符 0 次或多次
• "a*"匹配空字符串或连续的 a
• 几乎所有行都会匹配,因为*可以匹配 0 个 a
字符集 - 查找包含 a、b 或 c 的行
grep "[abc]" file.txt
详细解释 :
• [abc]:字符集合,匹配其中任意一个字符
• 匹配包含 a 或 b 或 c 的行
• 方括号内的字符是"或"关系
字符范围 - 查找包含小写字母的行
grep "[a-z]" file.txt
表示再file.txt文件中查找包含小写字母的行
如果在 grep 后再加个 -i 选项,就表示不区分大小写,查找所有字母所在的行
详细解释 :
• [a-z]:字符范围,匹配 a 到 z 之间的任意小写字母
• 等价于[abcdefghijklmnopqrstuvwxyz]
• 匹配包含任何小写字母的行
排除字符集 - 查找不包含 a、b、c 的行
grep "[^abc]" file.txt
表示在 file.txt 文件中查找不包含a或b或c的行
详细解释 :
• [^abc]:排除字符集,匹配不包含 a、b、c 的任意字符
• 方括号内以^开头表示否定
• 匹配包含除 a、b、c 外其他字符的行