正則、grep工具
正則表達式是用於字符串的模式分割、匹配、查找及替換等操作。模糊匹配
Linux正則表達式一般以行為單位處理的。
通配符例子:ls *.log這裏的*就是通配符(表示所有),不是正則表達式
三劍客以外的*是通配符
grep [-cinvABC] ‘word‘ filename
-c 行數
[root@lsxlinux02 ~]# grep "root" passwd //grep自帶顏色
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@lsxlinux02 ~]# grep -c "root" passwd //-c 行數
2
-i 不區分大小寫
[root@lsxlinux02 ~]# grep -ni "root" passwd //-i 不區分大小寫
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
20:adsadadaROOT
21:adsadadaRooT
-n 顯示行號
[root@lsxlinux02 ~]# grep -n "root" passwd //-n 顯示行號
1:root:x:0:0:root:/root:/bin/bash
10:operator:x:11:0:operator:/root:/sbin/nologin
-v 取反
[root@lsxlinux02 ~]# grep -nv "root" passwd //-v 取反
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6:sync:x:5:0:sync:/sbin:/bin/sync
-r 遍歷所有子目錄
[root@lsxlinux02 ~]# grep -r "root" /etc/ //-r 遍歷所有子目錄
/etc/pki/ca-trust/extracted/README:root CA certificates.
/etc/pki/ca-trust/extracted/java/README:root CA certificates.
[root@lsxlinux02 ~]# grep -r "root" /etc/ > /tmp/grep.txt //當內容不好找時,可以定向到文件
[root@lsxlinux02 ~]# grep "passwd" /tmp/grep.txt
/etc/passwd:root:x:0:0:root:/root:/bin/bash
/etc/passwd:operator:x:11:0:operator:/root:/sbin/nologin
/etc/passwd-:root:x:0:0:root:/root:/bin/bash
/etc/passwd-:operator:x:11:0:operator:/root:/sbin/nologin
/etc/postfix/main.cf:# the system passwd file in the chroot jail is just not practical.
-A 後面跟數字,過濾出符合要求的行以及下面n行. --after
[root@lsxlinux02 ~]# grep -nA2 "root" passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
--
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
-B 同上,過濾出符合要求的行以及上面n行.--before
[root@lsxlinux02 ~]# grep -nB2 "root" passwd
1:root:x:0:0:root:/root:/bin/bash
--
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
-C 同上,同時過濾出符合要求的行以及上下各n行
[root@lsxlinux02 ~]# grep -nC2 "root" passwd
1:root:x:0:0:root:/root:/bin/bash
2-bin:x:1:1:bin:/bin:/sbin/nologin
3-daemon:x:2:2:daemon:/sbin:/sbin/nologin
8-halt:x:7:0:halt:/sbin:/sbin/halt
9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
11-games:x:12:100:games:/usr/games:/sbin/nologin
12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
grep工具(中下)
grep實例
grep -n ‘root‘ /etc/passwd //匹配root並打印行號
grep -nv ‘nologin‘ /etc/passwd //匹配不含有nologin,並打印行號
grep ‘[0-9]‘/etc/inittab //匹配【】裏面的任何一個都滿足
grep -v ‘[0-9]‘/etc/inittab //匹配不含有【】裏面的內容
grep -v ‘^#‘ /etc/inittab //匹配不以#開頭的
grep -v ‘^#‘ /etc/inittab|grep -v ‘^$‘ //匹配不以#開頭,又不以$開頭的
grep -n "[a-zA-Z]" passwd //匹配含有字符集裏任意一個
grep -n "[^a-zA-Z]" passwd //匹配不含有字符集任意一個
grep -n "^[a-zA-Z]" passwd //匹配以字母開頭的
grep ‘^[^a-zA-Z]‘ test.txt //匹配不以字符集內的內容開頭
grep ‘r.o‘ test.txt // .點代表r和o之間有任意一個字符過濾出來
grep ‘oo*‘ test.txt //*表示重復前面一個字符0次或者多次
grep ‘.*‘ test.txt //匹配所有
grep ‘o\{2\}‘ /etc/passwd //重復至少2次,前面的字符。egrep可取消\
egrep ‘o{2}‘ /etc/passwd
egrep "(oo){2}" passwd //表示重復至少2次()裏面的是組合
egrep ‘o+‘ /etc/passwd //+匹配一個或多個前面的字符
egrep ‘oo?‘ /etc/passwd //?匹配前面一個字符0次或者1次(有或者沒有)
egrep ‘root|nologin‘ /etc/passwd //匹配含有root或者nologin的
[root@localhost ~]# grep ‘a*‘ grep01.txt //*前面加一個字符是沒有意義的
a
aa
aaa
dd
本文出自 “帕多克的癡迷” 博客,請務必保留此出處http://lsxme.blog.51cto.com/12400127/1983347
正則、grep工具