正規表示式
(regular expression,re)
是一種字元模式,用於在查詢過程中匹配指定的字元。
正規表示式元字元(萬用字元)
元字元/
萬用字元功能
例子匹配物件
^行首定位符
/^hello/
匹配以hello
開頭的$
行尾定位符
/hello$/
匹配以hello
結束的行
.匹配單個字元
/l..e/
匹配以l
開頭,中間
2字元並以
e結尾的詞*匹配
0或多個正好在它之前的那個字元。例如正規表示式
.* 意味著能夠匹配任意數量的任何字元。
/.*/
匹配任意字元
匹配任意一組任意字元
/[hh]ello/
hello
或hello
[x-y]
匹配從x-y
範圍字元
/a[a-c]c/
aac,abc,acc
[^]匹配不在指定組內字元
[^1-9]
不在1-9
之間的字元
\轉義字元
/hello\./
hello.
以下的在vi、
grep
支援\<
詞首定位符
/\匹配包含
love
開頭的行
\>
詞尾定位符
/\>love/
匹配包含
love
結尾的行
\(..\)
x\字元x
重複出現m次
x\***a aaa***b dd***ee
x\字元
x至少重複出現m次
x\***a ***xa
x\字元x重複
m次到n次
x\***a ***xa ***xxa
命令格式:
grep [-bchilnsvw] limited-regular-expression [filename...]
grep
(global search regular expression(re) and print out the line,
全面搜尋正規表示式並把行列印出來)是一種強大的文字搜尋工具,它能使用正規表示式搜尋文字,並把匹配的行列印出來。
unix
的grep
家族包括
grep
、egrep
和fgrep
。egrep
和fgrep
的命令只跟
grep
有很小不同。
egrep
是grep
的擴充套件,支援更多的
re元字元,
fgrep
就是fixed grep
或fast grep
,它們把所有的字母都看作單詞,也就是說,正規表示式中的元字元表示回其自身的字面意義,不再特殊。
linux
使用gnu
版本的grep
。它功能更強,可以通過-g、
-e、-f命令列選項來使用
egrep
和fgrep
的功能。
grep
的工作方式是這樣的,它在乙個或多個檔案中搜尋字串模板。如果模板包括空格,則必須被引用,模板後的所有字串被看作檔名。搜尋的結果被送到螢幕,不影響原檔案內容。
grep
可用於shell
指令碼,因為
grep
通過返回乙個狀態值來說明搜尋的狀態,如果模板搜尋成功,則返回
0,如果搜尋不成功,則返回
1,如果搜尋的檔案不存在,則返回
2。我們利用這些返回值就可進行一些自動化的文字處理工作。
grep
正規表示式的原字符集與上文的正規表示式的原字符集基本一致,這裡只補充
grep
的正規表示式元字符集。
元字元/
萬用字元功能
例子說明
\w匹配文字和數字字元,即
[a-za-z0-9]
'g\w*p'
匹配以g後跟零個或多個文字或數字字元,然後是p
\w \w的反置形式,匹配乙個或多個非單詞字元\b
單詞鎖定符
'\bgrep\b'
只匹配grep 選項
功能-b
列印匹配行前面列印該行所在的塊號碼-c
只列印匹配的行數,不顯示匹配的內容-h
當搜尋多個檔案時,不顯示匹配檔名字首-i
忽略大小寫差別-l
列印匹配模板的檔案清單-n
在匹配的行前面列印行號-s
不顯示關於不存在或者無法讀取檔案的錯誤資訊-v
反檢索,只顯示不匹配的行-w
如果被\<
和\>
引用,就把表示式做為乙個單詞搜
索$ ls -l | grep '^a'
通過管道過濾
ls -l
輸出的內容,只顯示以
a開頭的
行$ grep 'test' d*
顯示所有以
d開頭的檔案中包含
test
的行$ grep 'test' aa bb cc
顯示在aa,bb
,cc檔案中匹配
test
的行$ grep '[a-z]\' aa
顯示所有包含每個字串至少有
5個連續小寫字元的字串的行
$ grep 'w\(es\)t.*\1' aa
如果west
被匹配,則
es就被儲存到記憶體中,並標記為
1,然後搜尋任意個字元(
.*),這些字元後面緊跟著另外乙個es(
\1),找到就顯示該行。如果用
egrep
或grep -e
,就不用
"\"號進行轉義,直接寫成
'w(es)t.*\1'
就可以了
unix shell學習筆記1
table of contents 1.shell 簡介1.1 shell 種類1.2 shell 對比1.3 詳細特性比較 1.4 shell初始檔案 c shell tc shell bourne shell bash shell korn shell 其中,c shell 和tc shell依...
unix shell學習筆記4
容,處理後,不改變檔案內容。sed options command file s sed options f scriptfile file s command a 在當前行後面加入一行文 本b lable 分支到指令碼中帶有標記的地方,如果分支不存在則分支到指令碼的末 尾c 從模板塊 patter...
unix shell學習筆記 C shell程式設計
shell指令碼由命令和散布其間的注釋組成。執行指令碼步驟為 選擇shell 授予執行許可權 執行指令碼 選擇shell,第一行以 即shbang指明所用的shell直譯器,如 bin csh 或者 bin tcsh 授予執行許可權 chmod x myscript 執行指令碼 myscript 例...