基於使用者指定的「模式」,對目標檔案逐行進行匹配檢查,列印匹配到的行,預設列印到終端視窗
模式:正規表示式元字元編寫出來的過濾條件
正規表示式:由一類特殊的字元以及文字字元所編寫的模式,並不代表字面含義,表達控制或者通配的功能
grep [options] pattern [file…]grep [options] [-e pattern | -f file] [file…]
--color=auto:高亮顯示匹配到的文字
-i:忽略字元大小寫
-n:顯示行號
-e:支援使用擴充套件正規表示式
-o:列印匹配到的行
-v:顯示不能被匹配到的行
—a #:後幾行
-b #:前幾行
-c #:前後各幾行
元字元:
字元匹配
.:匹配任意單個字元
:[^]:
[[:lower:]]
匹配次數
用在要指定出現的次數的字元的後面,用來限制其前面字元出現的次數
*:匹配其前面的字元任意次。0次,1次或者多次
.*:匹配任意長度的任意字元
\?:匹配其前面的字元0次或者1次,最多一次
\+:匹配其前面的字元1次或者多次,至少一次
\:匹配其前面的字元m次
\:匹配其前面的字元至少m次,至多n次
\:至多n次
\:至少m次
位置錨定
^:行首錨定,用於模式的最左側
$:行尾錨定,用於模式的最右側
^$:空白行
^[[:space:]]*$
^pattern$:用pattern來匹配整行
\《或者\b:詞首錨定,用於單詞的左側
\>或者\b:詞尾錨定,用於單詞的右側
\
練習:
1、顯示/etc/passwd檔案中不以/bin/bash結尾的行;
2、顯示/etc/passwd中的兩位數或者三位數
3、找出 netstat -tan 命令結果中以listen後跟乙個或者多個空白字元結尾的行
分組和引用
\(\):分組,將乙個或者多個字元**在一起當作乙個整體處理
\(xy\)\(mn\)\(zq\)*ab
xyab xyxyab ab xyxyxyxyxyab
引用分組括號內匹配的模式,會被正規表示式引擎記錄在內部變數中,通過變數進行應用
\1:模式從左側起,第乙個左括號與之匹配的右括號之間模式所匹配到的字元
\2: 模式從左側起,第二個左括號與之匹配的右括號之間模式所匹配到的字元
正規表示式 正規表示式 總結
非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...
正規表示式 表示式
網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...
Linux正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...