一、什麼是正則
正則就是用一些具有特殊含義的符號組合到一起(稱為正規表示式)來描述字元或者字串的方法。
二、grep
引數:-n :顯示行號
-o :只顯示匹配的內容
-q :靜默模式,沒有任何輸出,得用$?來判斷執行成功沒有,即有沒有過濾到想要的內容
-l :如果匹配成功,則只將檔名列印出來,失敗則不列印,通常-rl一起用,grep -rl 'root' /etc
-a :如果匹配成功,則將匹配行及其後n行一起列印出來
-b :如果匹配成功,則將匹配行及其前n行一起列印出來
-c :如果匹配成功,則將匹配行及其前後n行一起列印出來
--color
-c :如果匹配成功,則將匹配到的行數列印出來
-e :等於egrep,擴充套件
-i :忽略大小寫
-v :取反,不匹配
-w:匹配單詞
grep種類:
grep
fgrep
pgrep
egrep
三、正則介紹
^ 行首
$ 行尾
. 除了換行符以外的任意單個字元
* 前導字元的零個或多個
.* 所有字元
字元組內的任一字元
[^] 對字元組內的每個字元取反(不匹配字元組內的每個字元)
^[^] 非字元組內的字元開頭的行
[a-z] 小寫字母
[a-z] 大寫字母
[a-z] 小寫和大寫字母
[0-9] 數字
\< 單詞頭 單詞一般以空格或特殊字元做分隔,連續的字串被當做單詞
\> 單詞尾
擴充套件正則 sed 加 -r 引數 或轉義
grep 加 -e 或 egrep 或轉義
awk 直接支援 但不包含
可以使用--posix支援
[root@miwifi-r3-srv ~]# awk '/ro/' /etc/passwd
[root@miwifi-r3-srv ~]# awk --posix '/ro/' /etc/passwd
sed -n '/roo\?/p' /etc/passwd
sed -rn '/roo?/p' /etc/passwd
? 前導字元零個或乙個
+ 前導字元乙個或多個
abc|def abc或def
a(bc|de)f abcf 或 adef
x\ x出現m次
x\ x出現m次至多次(至少m次)
x\ x出現m次至n次
posix定義的字元分類:
[:alnum:] alphanumeric characters.
匹配範圍為 [a-za-z0-9]
[:alpha:] alphabetic characters.
匹配範圍為 [a-za-z]
[:blank:] space or tab characters.
匹配範圍為 空格和tab鍵
[:cntrl:] control characters.
匹配控制鍵 例如 ^m 要按 ctrl+v 再按回車 才能輸出
[:digit:] numeric characters.
匹配所有數字 [0-9]
[:graph:] characters that are both printable and visible. (a space is print-
able, but not visible, while an a is both.)
匹配所有可見字元 但不包含空格和tab 就是你在文字文件中按鍵盤上能用眼睛觀察到的所有符號
[:lower:] lower-case alphabetic characters.
小寫 [a-z]
[:print:] printable characters (characters that are not control characters.)
匹配所有可見字元 包括空格和tab
能列印到紙上的所有符號
[:punct:] punctuation characters (characters that are not letter, digits, con-
trol characters, or space characters).
特殊輸入符號 +-=)(*&^%$#@!~`|\"'{}:;?/>.<,
注意它不包含空格和tab
這個集合不等於^[a-za-z0-9]
[:space:] space characters (such as space, tab, and formfeed, to name a few).
[:upper:] upper-case alphabetic characters.
大寫 [a-z]
[:xdigit:] characters that are hexadecimal digits.
16進製制數 [0-f]
使用方法:
[root@seker ~]# grep --color '[[:alnum:]]' /etc/passwd
四、sed
sed流編輯器 stream editer,是以行為單位的處理程式
sed 流編輯器 stream editer
語法sed [options] 'command' in_file[s]
options 部分
-n-e
-i-f
command 部分
'[位址1,位址2] [函式] [引數(標記)]'
定址的方法 1.數字 2.正則
數字十進位制數
1 單行
1,3 範圍 從第一行到第三行
2,+4 匹配行後若干行
4,~3 從第四行到下乙個3的倍數行
2~3 第二行起每間隔三行的行
$ 尾行
1! 除了第一行以外的行
正則正則必須用//包裹起來
擴充套件正則需要用 -r 引數或轉義
數字定址:sed -n '1p' /etc/passwd
正則定址:sed -n '/^root/p' /etc/passwd
正規表示式 正規表示式 總結
非負整數 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正規表示式 編寫正規表示式
為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...