Linux中正则表达式的使用详解

时间:2022-12-03 19:20:45

在讲正则表达式之前先说一下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