shell中正则表达式

时间:2021-04-15 18:51:16

看了鸟哥的linux总结一下,以备后面用到。

1.一些特殊符号

shell中正则表达式

 

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

  2word$:将行尾为 !的那一行打印出来,并列出行号 

             搜寻“!”结尾的: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字符』

            搜寻在gg之间有2个到3o存在的字符串:grep -n 'go\{2,3\}g' regular_express.txt