抱怨只是無能的表現,無它。 ——馬哥,永遠都是正能量
正則表達式:
理解:由元字符及正常字符拼湊的一中模式,根據目標字符或字符串的某些特徵總結出來的對應的“公式”
作用:可用於文件查找,模式匹配等等
字符匹配:
次數匹配:
位置錨定:
^:錨定行首
$:錨定行尾
\<:錨定詞首
\>:錨定詞尾
^$:匹配空白行,包括行中只有空格和製表符的行!!!
\(\):分組。這個感覺比較高大尚。分組模式中,在某次匹配過程中所匹配到的字符,被grep暫時記憶(保存到內置變量\1,\2,...中),故而
\1:引用自左向右的第一個括號以及與之對應的又括號中的內容
*:其左側的字符出現任意次
.*:任意長度任意字符
\?:其左側的字符出現0次或1此
\+:其左側的字符出現1次或多次
\{m\}:精確匹配其左側的字符出現m此
\{m,n\}:匹配其左側字符至少出現m次,至多出現n次
.:匹配任意單個字符
[]:匹配指定範圍內的任意單個字符
[^]:匹配指定範圍外的任意單個字符的
練習如下:
找出/proc/meminfo文件中以大寫S或小寫s開頭的行:
顯示/etc/passwd文件中其默認shell爲非/sbin/nologin的用戶及默認shell
顯示/etc/passwd文件中的一位數或兩位數(不包括三位及三圍以上數字)
顯示/boot/grub/grub.conf文件中至少以一個空白字符開頭且後跟i字符的行
找出系統上其用戶名和默認shell相同的用戶的信息
d
grep --color=auto "[^sS]" /proc/meminfo
grep "^\([[:alnum:]]\>\).*\1$" /etc/passwd
grep "^[[:space:]]\+i" /boot/grub/grub.conf
grep "\<[0-9]\{1,2\}\>" /etc/passwd
grep -v "/sbin/nologin$" /etc/passwd | cut -d: -f1,7