正则表达式
 

  正则表达式又称规则表达式,正则就是一串有规律的字符串,掌握好正则对于编写shell脚本有很大帮助,各种编程语言中都有正则,原理一样。学好正则表达式,才算真正进入linux。 

 
 
 
 
正则三剑客: 
 grep/egrep, 
 sed, 
 awk
 
 
 
 
grep
 
grep [-cinvABC] ‘word’ filename
 
-c 行数
 
-i 不区分大小写
 
-n 显示行号
 
-v 除去,非,不包括,等反义
 
-r 向下查找所有目录
 
-A 跟数字,过滤包含指定字符的行及下面的n行字符串
 
-B 跟数字,过滤包含指定字符的行及上面的n行字符串
 
-C 跟数字,过滤包含指定字符的行及上下各n行字符串
 

  . 

 

  grep 'nologin' passwd 过滤passwd文件中包含nologin的字符串 

 

  grep -c 'nologin' passwd 过滤包含nologin的字符串并统计行数 

 

  grep -n 'nologin' passwd , 过滤包含nologin的字符串并显示行号,区分大写 

 

  grep -ni 'nologin' passwd 不分大小写过滤包含nologin的字符串并显示行号 

 

  grep -vni 'nologin' passwd 不分大小写过滤不包括nologin的字符串并显示行号 

 

  grep -r ‘root’ /etc/ 逐级向下层目录文文件过滤包含root的字符串 

 

  grep -A2 'root' passwd 过滤包含root的字符串行及以下2行字符串 

 

  grep -nA2 'root' passwd 过滤包含root的字符串行及以下2行字符串,并显示行号 

 

  grep -nB5 'root' passwd 过滤包含root的字符串行及以上5行字符串,并显示行号 

 

  grep -nC3 'root' passwd 过滤包含root的字符串行及以上下各3行字符串,并显示行号 

 
 
 
 

  grep '[0-9]' /etc/initab 过滤包含集合条件的字符串 

 

  grep -v '[0-9]' /etc/initab 过滤不包含集合条件的字符串 

 

  grep -v '^#' /etc/initab 过滤不包含以#开头的字符串 

 

  grep -v '^#' /etc/initab|grep -v '^$' 过滤不包含以#开头的字符串或过滤不包含以$开头的字符串 

 

  grep '^[^a-zA-Z]' test.txt 过滤以非集合条件开头的字符串 

 

  grep 'r.o' test.txt 过滤中间包含任意单字符的ro组合的字符串 

 

  grep 'r*o' test.txt 过滤中间包含任意个任意字符的ro组合的字符串 

 
.*' test.txt 过滤重复出现任意次的一个单字符的字符串, 
   
 . 
  表示任意的单字符 

 

  grep 'oo*' test.txt 过滤重复出现任意次的oo的字符串 

 

  grep 'o\{2\}' /etc/passwd 过滤重复出现两次o的字符串 

 

  grep 'o\{0,3\}' /etc/passwd 过滤重复出现0到3次o的字符串 

 
grep -E 'o{2}' /etc/passwd 过滤重复出现2次o的字符串
 
egrep 'o{2}' /etc/passwd 过滤重复出现2次o的字符串
 
egrep 'o+t' /etc/passwd 过滤重复出现1次以上的o与字符t的组合的字符串
 
grep ‘o\+m' /etc/passwd 过滤重复出现1次以上的o与字符m的组合的字符串
 
egrep 'o?e' /etc/passwd 过滤重复0次或1次的o与e的组合的字符串
 
egrep 'root|nologin' /etc/passwd 过滤包含root或nologin的字符串
 
grep -Ei 'root'|'nologin' 不分大小写过滤包含root或nologin的字符串
 
egrep '(oo){2}' /etc/passwd 过滤重复出现2次的oo组合的字符串
 
grep -r --include="*.php" 'eval' /*/ 过滤单目录下所有.php文件里含有eval的字符串