Linux正则表达式
1.一些特殊符号
2.行首控制符^、行尾控制符$
[html]
找出行首包含the的:
[root@www ~]# grep -n '^the' regular_express.txt
开始为小写字母的:
# grep -n '^[a-z]' regular_express.txt
那如果我不想要开头是英文字母:
# grep -n '^[^a-zA-Z]' regular_express.txt
开头不是英文字母的:
[root@www ~]# grep -n '^[^a-zA-Z]' regular_express.txt
显示空白行:
[root@www ~]# grep -n '^$' regular_express.txt
不显示空白行和带#号的行:
# grep -v '^$' /etc/syslog.conf | grep -v '^#'
3.正则表达式中。“.”代表绝对有一个任意字符的意思;而“*”代表重复前一个到无穷次的意思
[cpp]
寻找g开头和d结束的包含四个字符:
# grep -n 'g..d' regular_express.txt
寻找oo, ooo, oooo 等等 数据,也就是说,至少要有两个o 以上:
# grep -n 'ooo*' regular_express.txt(前两个o必须存在,第三个o重复次数不限)
寻找g开头和g结束的字符串,中间可有可无
[root@www ~]# grep -n 'g.*g' regular_express.txt
我想要找出两个到五个o的连续字符串,该如何作?这时候就得要使用到限定范围 字符{}了。 但因为 {} 在 shell 是有特殊意义的。必须要使用跳脱字符 / 让他失去特殊意义才行。至亍 {}的语法法是这样的,假设我要找到两个o的字符串,可以是:
[root@www ~]# grep -n 'go/{2,5/}g' regular_express.txt
4.正则表达式中特殊字符
(1) ^word:待搜寻的字符串(word)在行首!
搜寻“#”开始的:grep -n '^#' regular_express.txt
(2)word$:将行尾为 ! 那一行打印出 , 列出行号
搜寻“!”结尾的:grep -n '!$' regular_express.txt
(3)/:将特殊符号 特殊意义去除!
搜寻吨有单引号 ' 的那一行:grep -n /' regular_express.txt
(4)*:重复零个到无穷多个 前一个字符
搜寻es开头,后面s重复2次以上的:grep -n 'ess*' regular_express.txt
(5)[list]:字符集合的RE字符,里面列出想要选择的字符!
搜寻gl或者gd的行:grep -n 'g[ld]' regular_express.txt
(6)字符集合的RE字符,里面列出不要的字符串串范围!
搜寻的字符串可以是 (oog) (ood)但不能是 (oot):rep -n 'oo[^t]' regular_express.txt
(7)[n1-n2]:字符集合的 RE字符,里面列出想要包括的字符范围!
搜寻含有数字的:grep -n '[0-9]' regular_express.txt
(8)/{n,m/}:连续 n到 m 个的『前一个 RE字符』
搜寻在g 不g之间有2个到3个o存在的字符串:grep -n 'go/{2,3/}g' regular_express.txt