九、1 Grep

正則介紹html

正則就是一串有規律的字符串shell

掌握好正則對編寫shell腳本有很大幫助編程

各類編程語言中都有正則,原理是同樣的編程語言

經常使用的工具備grep/egrep、sed、awk工具

正則:http://www.runoob.com/regexp/regexp-syntax.html3d

 

. 表示任意一個任意字符
 * 表示零個或多個*前面的字符(* 號表明字符能夠不出現,也能夠出現一次或者屢次(0次、或1次、或屢次))
.* 表示通配,全部的都匹配
{} 表示範圍,{}花括號前面字符的一個範圍
+表示一個或多個+號前面的字符(+號表明前面的字符必須至少出現一次(1次或屢次))
?表示0個或一個問號前面的字符(? 問號表明前面的字符最多隻能夠出現一次(0次、或1次))
|表示或者
\放在特殊符號前,則該特殊符號的做用消失(脫意符)
過濾指定的關鍵詞,格式爲:grep [-cinvABC] '關鍵詞' filenameregexp

(以上命令中
'string' 單引號 (single quote)
被單引號用括住的內容,將被視爲單一字符串。在引號內的表明變數的$符號,沒有做用,也就是說,他被視爲通常符號處理,防止任何變量替換。
heyyou=homeecho '$heyyou' # We get $heyyou
"string" 雙引號 (double quote)
被雙引號用括住的內容,將被視爲單一字串。它防止通配符擴展,但容許變量擴展。這點與單引數的處理方式不一樣。
heyyou=homeecho "$heyyou" # We get home
`command` 倒引號 (backticks)
在前面的單雙引號,括住的是字串,但若是該字串是一列命令列,會怎樣?答案是不會執行。要處理這種狀況,咱們得用倒單引號來作。
fdv=`date +%F`echo "Today $fdv"
在倒引號內的 date +%F 會被視爲指令,執行的結果會帶入 fdv 變數中。)htm

-c:表示打印符合要求的行數
-n:表示輸出符合要求的行及行號
-i:不區分大小寫
-v:取反,打印不符合要求的行
-r:遍歷全部子目錄
-A :後面跟一個數字,過濾出符合要求的行以及下面n行
-B:後面跟一個數字,過濾出符合要求的行以及上面n行
-C:後面跟一個數字,過濾出符合要求的行以及上下各n行blog

-c:表示打印符合要求的行數ci

-n:表示輸出符合要求的行及行號

-i:不區分大小寫

-v:取反,打印不符合要求的行

-r:遍歷全部子目錄

匹配全部帶root的文件

-A :後面跟一個數字,過濾出符合要求的行以及下面n行

-B:後面跟一個數字,過濾出符合要求的行以及上面n行

-C:後面跟一個數字,過濾出符合要求的行以及上下各n行

grep '[0-9]':表示過濾出包含數字的全部行

grep -nv '[0-9]':表示過濾出不包含數字的全部行

grep -v '^#':表示過濾掉全部已#開頭的行,^表示以什麼開頭

grep  '[^0-9]':表示過濾掉全部數字,^在中括號裏表示非的意思

grep  -n '^[^0-9]':表示過濾出以非數字開頭的行和行號

grep  -nv '^[^0-9]':表示過濾出以數字開頭的行和行號

例如 [^0-9]  那就是非數字(包括字母+特殊符號)
例如[^a-zA-Z] 那就是非字母(包括數字+特殊符號)
例如[^0-9a-zA-Z]那就是非數字字幕(特殊符號)

grep 'r.o':表示過濾出任意的一個字符, . 表示任意一個字符

grep 'o*o':表示過濾出零個到多個o(*前面的字符)

grep '.*':表示過濾出任意字符

grep 'o\ {2\ }' :表示過濾出指定字符出現的次數,{}能夠是一個範圍,如'o\ {0,3\ }'

還有兩種表示方法:egrep 'o{2 }'   grep -E 'o {2 }'

grep 'o\+o':表示過濾出1個到多個o(+前面的字符)

egrep 'o?t':表示過濾出零個到1個o(?前面的字符)

grep -E 'root|nologin' ,|表示或者的意思

把一個目錄下,過濾全部*.txt文檔中含有aa222的行;   grep -r --include="*.txt" 'aa222'  /

grep '^s.*n$' passwd,匹配以s在開頭n在結尾的行

相關文章
相關標籤/搜索