shell中正则表达式


看了鸟哥的linux总结一下,以备后面用到。
 
1.一些特殊符号

2.行首控制符^、行尾控制符$

找出行首包含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.正则表达式中。“.”代表绝对有一个任意字符的意思;而“*”代表重复前一个到无穷次的意思

寻找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

相关内容