正則表達式(REGULAR):為處理大量的字符串而定義的一套規則和方法,為了處理大量字符串而生
常見命令參數
基礎正則表達式
. :有且只有任意一個字符(包括空格)
* :重復前面任意0或者多個字符
.*:匹配任意字符==>所有,包括空格
\ :轉義字符,讓有意義的字符,顯示原型 \$ --> $本身
^ :^d 以d開頭的文件
$ :/$ 以/結尾的文體
^$:表示空行 grep -vn "^$" h.txt -->不顯示空行 -n 顯示行號
sed -r 's#(.*) fff#I am \1#g' h.txt 僅僅取每一行的()里面的東西
r==reqular
[abc] 匹配字符集內的任意一個字符 [0-9]匹配0-9 [a-z] a-z
[^abc] 不匹配字符集內的任意字符,相當於取反
a\{n,m} 重復前一個字母,n到m次
grep "0\{2\}" h.txt 重復0 2次
==> egrep "0{2}" h.txt
==> grep -E "0{2}" h.txt
\{n,\} 重復至少n次
\{,m\} 重復之多m次
注意:egrep ,sed -r過濾一般特殊字符可以不轉義
\w : 只打印字母
grep "\w" h.txt --> a b c d e f g h i
\W : 打印非字母
\b :匹配單詞的定界符
grep "\bhello\b" h.txt
\d : 表示數字
常用的命令展示
擴展正則表達
擴展正則表達式:多用於 egrep,grep -E
1. + 重復一個或者一個以上的字符
grep -Eo "go+d" h.txt --> god good
2. ?重復0個或者一個 比 . 的范圍大
grep -Eo "g?d" h.txt --> gd, d
grep -Eo "go?d" h.txt --> gd god
3. | 查詢多個符合的字符串
grep -Eo "hello|world" --> hello world
4. ()找出"用戶組"字符串
egrep "g(la|oo)d" h.txt --> good glad
關於正則的一些小知識
1.Linux中適用於:grep,egrep,awk,sed, 2.區別通配符和正則 例如 ls *.log這里的 * 表示 所有的 3.Linux一般以行為單位 4.注意字符集 export LC_ALL=C 5.可以在 man grep/sed 過濾REGULAR 查看更多正則
