•正則就是一串有規律的字符串php
• 掌握好正則對於編寫shell腳本有很大幫助shell
• 各類編程語言中都有正則,原理是同樣的編程
• 本章將要學習grep/egrep、sed、awkcentos
centos7中grep自帶顏色別名,至關於centos6中的 ‘grep --color’:bash
[root@localhost grep]# which grepssh
alias grep='grep --color=auto'編程語言
/usr/bin/grep學習
•grep [-cinvABC] 'word' filenamecentos7
• -c 行數spa
[root@localhost ~]# grep -c 'root' /etc/passwd
2
• -i 不區分大小寫
• -n 顯示行號
• -v 取反
[root@localhost grep]# grep -v 'nologin' passwd 不顯示包含‘nologin’的行
root:x:0:0:root:/root:/bin/bash
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
gavin:x:1000:1000::/home/gavin:/bin/bash
zhang:x:1001:1001::/home/zhang:/bin/bash
user:x:1002:1002::/home/user:/bin/bash
• -r 遍歷全部子目錄
grep -r 'root' /etc/ 搜索/etc目錄下全部文檔,並過濾出包含root關鍵字的行
• -A 後面跟數字,過濾出符合要求的行以及下面n行
• -B 同上,過濾出符合要求的行以及上面n行
• -C 同上,同時過濾出符合要求的行以及上下各n行
• 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 '^[^a-zA-Z]' test.txt
^在外面表示以什麼什麼開頭;^在中括號中表示非什麼什麼;
過濾出非字母開頭的行
• grep -v '[^0-9]' /etc/inittab
匹配包含非數字的行,只排除了全數字的行,其餘都會顯示;
• grep 'r.o' test.txt
.表示任意的一個字符;'r.o'表示3位字符,以r開頭o結尾,中間能夠是任意一個字符;
匹配以r開頭o結尾,中間能夠是任意一個字符的行
• grep 'oo*' test.txt
*表示*號的前一個字符能夠有0到n個,重複0次是o,1次是oo,2次是ooo
• grep '.*' test.txt
.*表示任意個任意字符,(全部的都會匹配)
• grep 'o\{2\}' /etc/passwd = grep -E 'o{2}' /etc/passwd = egrep 'o{2}' /etc/passwd
{}花括號在grep中不脫義僅表示搜索包含花括號的,脫義以後表示有2個花括號前面的字符;
• egrep 'o{2}' /etc/passwd
egrep(擴展的grep,包含特殊符號時不用脫義),{}裏的數字表示有多少個前面的字符
• egrep 'o+' /etc/passwd
+表示1個或多個+號前面的字符;(+號只對它前面的一個字符起做用,除非括號括起來的總體);
o oo ooo oooo ... 都會被匹配
• egrep 'oo?' /etc/passwd
? 表示0個或1個?號前面的字符
匹配 'o' 'oo'
• egrep 'root|nologin' /etc/passwd
|表示「或」
匹配包含root 或nologin的行
• egrep -v '^#|^$' /etc/ssh/sshd_config
列出非#開頭以及非空行
• egrep '(oo){2}' /etc/passwd
()表示括起來的是一個總體;
匹配oooo 的行
把一個目錄下,過濾全部*.php文檔中含有eval的行:
grep -r --include="*.php" 'eval' /data/