在讲正则表达式之前先说一下grep命令的使用
grep [-a c i n v] '搜索字符串' 文件名
此命令用于在文件中搜索包含 '搜索字符串' 的行
-a 把二进制文件以文本文件的形式搜索
-c 统计搜索到的行数
-i 不计大小写,也就是说搜索时 认为a与A是相同的
-n 输出行号
-v 反向搜索 就是搜索不包含 '搜索字符串' 的行
正则表达式语法
[] 任意取一 如 grep -n 'abc[de]g' file.txt 这个命令是说 在file.txt文件中搜索包含 abcdg 或abceg的行
[^]取反 如 grep -n 'abc[^b]g file.txt 指 在file.txt文件中搜索 'abc(此处不能是b)g ' 的行
^ 行首 grep -n '^abc' file.txt 行首必须是abc的行
$ 行尾 grep -n '$abc' file.txt 行尾必须是abc的行
. 任意一个字符 grep -n 'abc.d' file.txt 指匹配abc(此处为任意一个字符)d 如abckd,abc9d都正确,但是如果abc 和 d中间的字符大于一个则不匹配
* 重复字符,重复一次或无数次 grep -n 'abc*' file.txt 指 匹配字符串 abccc…… 也就是前面两位是ab后面可以有无数个c 也可以没有c
{} 重复次数限定符,由于这个符号在linux中有特殊的意义所有使用前要加\转意字符 grep -n 'ac\{2,5\}' file.txt 指匹配 acc accc acccc accccc 的字符串,也就说c字符必须出现最少2次最高5,否则就不匹配
- 范围限定符 grep -n 'ab[a-z]c' file.txt 指匹配 ab(这里必须是a到z这26个字母中的一个)c
下面为扩展正则表达式 必须通过命令 egrep可以使用
| 多次查寻 如egrep -n '^a|a$' text.file 此命令相当于执行一次grep -n '^a' text.file 再执行一次 grep -n 'a$' text.file
+ 重复一次或多次,这个符号与*差不多,但+要求字符最少出现一次
? 重复0次或一次 这个要求字符可以不出现,但出现只能出现一次
() 组查找 如 egrep -n 'a(ab|dg)k' text.file 指匹配 字符串 aabk或adgk