1. 程式人生 > >grep 正則表達式

grep 正則表達式

space 遞歸 字符串 uniq 進制 cab 引用 pat digi

grep 可以對文件內容過濾,默認情況是對行過濾; grep語法格式:# grep <pattern> <arg> 實例:grep root passwd grep 選項 -m 匹配條件後停止; # grep -m1`whoami` /etc/passwd -i 忽略條件字符大小寫 -v 顯示不能被條件匹配的字符; # grep -v root /etc/passwd;不包含root的行 -n 顯示匹配的行號 -c 統計匹配的行數 -o 僅顯示匹配到的字符串 -q 靜默模式,不輸出任何信息 ,結果不一樣 echo $? -A 匹配後N行 -B 匹配前N行 -C 匹配前後N行 -e 多個選項的邏輯or關系;# grep -e ‘cat‘ -e ‘dog‘ file -w 匹配整個單詞 -E 匹配支持ERE -F 相當於fgrep,不支持正則表達式 -f 根據文件內容作為標準輸入顧慮 # grep -f file.txt /etc/passwd,根據 file.txt的內容,匹配 passwd 正則表達式分類:基本正則表達式(BRE)和擴展的正則表達式 (ERE) 字符匹配: 匹配特定類型字符 . 匹配任意單個字符 [] 匹配指定範圍內的任意單個字符 [^] 匹配任意範圍以外的任意單個字符; [:lower:]任意小寫字母 [:upper:]任意大寫字母 [:alpha:]任意大小寫的字母 [:alnum:]字母和數字(大小寫和數字) [:digit:]任意十進制數字 匹配次數 * :匹配前面的字符任意次數,包括0次;盡可能的匹配; .* :匹配任意長度的任意字符 \? :匹配器前面的字符0或1次,對前面字符可有,可無; \+ :匹配其前面的字符至少1次; \{n\}:匹配前面的字符n次 \{m,n\}:匹配前面的字符至少每次,最多n次; \{,n\}:匹配前面的字符最多n次; \{n,\}:匹配前面的字符最少n次; 位置錨定--定位出現的位置 ^ 行首錨定;以什麽開頭 $ 行尾錨定:以什麽結尾 ^pattern$:用於模式匹配整行 ^$ 空行 ^[[:space:]]*$ 空白行 \< 或 \b :詞首錨定,用於單詞模式的左側; \> 或 \b :詞尾錨定,用於單詞模式的右側; 分組\{\} : 將一個或多個字符捆綁在一起,當做一個整體處理,如\(root\)\+ \1 表示從左側起第一個左括號以及與之匹配右括號之間的模式 所匹配到的字符; 實例:echo abcabcabc |grep "\(abc\)\{3\}" 後向引用:引用前面的分組括號中的模式所匹配字符,而非模式本身; echo abcabcabc xyz xyz |grep "\(abc\).*\(xyz).*\1" \1匹配的是前面的一個結果 或 :\| -- 實例 a 或 b==a\|b egrep及擴展的正則表達式 egrep = grep -E 字符匹配 . 任意單個字符; [] 指定範圍的字符; [^] 不在指定範圍的字符; 次數匹配 * 匹配前面字符任意次數 ? 可有可無0或1次 + 1次或多次 {m} 匹配m次 {m,n}至少m數,最多n數; 位置錨定 ^ 行首 $ 行尾 \< 詞首or \b \> 詞尾 or \b 分組 () 後向引用 \1,\2 或 a|b 實例 1、搜索某文件是否包含字符串 命令格式:grep "被查找的字符串" Filename1 2、在多個文件中檢索某個字符串 命令格式: grep "被查找的字符串" FileName1... 3、顯示檢索內容在文件中的行 “-n“ 選項 命令格式: grep -n "被查找的字符串" *.log 4、檢索時需要忽略大小寫問題,可以使用參數 “-i” 命令格式: grep -i "被查找的字符串" *.log 5、從文件內容查找不匹配指定字符串的行 命令格式:grep –v "被查找的字符串" FileName 搜索查找匹配的行數: grep –c "被查找的字符串" FileName grep "被查找的字符串" FileName | wc -l 7、遞歸搜索某個目錄以及子目錄下的所有文件 命令格式:grep –r "被查找的字符串" FileDir 8、獲取哪些文件包含搜索的內容,並列出文件名 命令格式:grep -H –r "被查找的字符串" FileDir | cut -d: -f1| [uniq] 9、獲取與整個搜索字符匹配的內容 命令格式:grep –w "被查找的字符串" FileName

grep 正則表達式