05_grep命令

Grep命令功能:按照行方式處理文本。。。
grep 一般格式爲:
grep [選項]基本正則表達式[文件]
Grep參數
-c          只輸出匹配行的計數。
-I          不區分大小寫(只適用於單字符)。
-h          查詢多文件時不顯示文件名。
-l          查詢多文件時只輸出包含匹配字符的文件名。
-n          顯示匹配行及行號。
-s          不顯示不存在或無匹配文本的錯誤信息。
-v          顯示不包含匹配文本的所有行。
Grep命令原理
GREP 是 Global Regular Expression Print 的縮寫
對於標準輸入的每一行,grep執行以下的操作:
(1) 把下一輸入行復制到模式空間中. 模式空間是隻可保存一個文本行的緩衝區.
(2) 對模式空間應用正則表達式.
(3) 如果有匹配存在,該行從模式空間中被複制到標準輸出.
grep實用程序對輸入的每行重複這三個操作步驟.

注意grep處理下列情況的方式:
1.grep是一個搜索程序,它只能搜索匹配一個正則表達式的一行的存在性.
2.grep可以對一行採取唯一的動作是把它發送到標準輸出. 如果該行不匹配正則表達式,則其不被打印.
3.行的選擇只基於正則表達式. 行編號或其他準則不能用於選擇行.
4.grep是一個過濾器. 它可用在管道的左邊或右邊.
5.grep不能用於增加,刪除或修改行.
6.grep不能用於只打印行的一部分.
7.grep不能只讀取文件的一部分.
8.grep不能基於前面的內容或下一行來選擇一行.只有一個緩衝區,它只保存當前行.

//-c 只輸出匹配行的計數 
grep -c "hostnames" 1.txt       //有1行包含字符串 hostnames
eg
hzmct@U-64:/study/linuxtest/day03$ grep -c "hostnames" 2.txt
3

//-n 顯示滿足匹配模式的所有行行數
grep -n "hostnames" 2.txt
eg
$ grep -n "hostnames" 2.txt
4:hostnames
6:hostnames
12:hostnames

//顯示不匹配的行
grep -v "hostnames" 2.txt

//-i 不區分大小寫敏感
grep -i "hostNaMEs" 2.txt

//不匹配行首 如果要抽出記錄,使其行首不是48,可以在方括號中使用^記號,表明查詢在行首開始
grep -n '^[^48]' 2.txt

查找以k開頭,以d結尾且中間只有3個字符
grep 'k...d' 2.txt

//-E 是擴展
grep -E 'k...d|k..d' 2.txt
2.txt文件內容
48
48p
48
hello
ll48o
hello
48f
qq
hostnames

HostNAMES
//^只允許在一行的開始匹配字符或單詞
//查找首行以48開始的行
hzmct@U-64:/study/linuxtest/day03$ grep -n '^48' 2.txt
1:48
2:48p
3:48
7:48f
hzmct@U-64:/study/linuxtest/day03$ grep -n '[^48]' 2.txt
2:48p
4:hello
5:ll48o
6:hello
7:48f
8:qq
9:hostnames
11:HostNAMES
hzmct@U-64:/study/linuxtest/day03$ grep -n '^[^48]' 2.txt
4:hello
5:ll48o
6:hello
8:qq
9:hostnames
11:HostNAMES
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章