天天看點

linux shell程式設計文本處理指令greplinux shell程式設計文本處理指令greppattern 模式 --》模闆通配符例子

linux shell程式設計文本處理指令grep

linux中最為常用的三大文本(awk,sed,grep)處理工具之一,grep可以了解為過濾,通用的正規表達式分析程式,grep家族總共有三個:grep、egrep、fgrep。

pattern 模式 --》模闆

使用基本正規表達式

模式–》正規表達式–》用來表達某個意思–》利用正确的規則組合成一個公式,用來表達某個意思。

正規表達式–》是一些字元串,數字,特殊符号組合而成。

用途:在檔案中查找并顯示包含指定字元串的行

格式:grep  [選項]...  模式  目标檔案
           

-i:查找時忽略大小寫 ignore case

-v:反轉查找,輸出與模式不相符的行 -v, --invert-match

-n:顯示符合模式要求的行号 number

-r:遞歸搜尋所有檔案

-o:隻顯示比對的内容 -o, --only-matching

-E: 支援更多的元字元(支援擴充正則) -E, --extended-regexp regular expression 正規表達式

元字元:有特殊作用的字元   ^ $ 
	基本元字元 ^ $ *
	擴充元字元  |  +  ?  { }  
	egrep  = grep -E
	| 或者
           

-A: 找到比對行以及後幾行

-B:輸出比對行以及前幾行

-C:輸出前面和後面多少行

^ 代表以什麼開頭

$ 代表以什麼結尾

^$ 代表空行
           

^liuyong$ 一行裡隻有liuyong字元串

[1-9] 代表從1到9的任意一個數字
[a-Z] 從a-Z中取一個
[a-z] 從a-z中取一個
[A-Z] 從A-Z中取一個
[0-Z] 從0-9 和a-Z中取一個
[^0-Z] 不取0-Z的字元 -->取反
           

舉例

cat  /etc/passwd |egrep  "^ly[1-9]"
	cat  /etc/passwd |egrep  "^root"   以root開頭的行   
	cat  /etc/passwd |egrep  "bash$"   以bash結尾的行
	cat /etc/ssh/sshd_config |egrep -v "^$|^#"
           

通配符

* 代表比對前一個項任意次
  ? 代表比對前一個項0次或者1次
  + 代表比對前一個項 一次到多次
  . 占位符 除\n之外的任意字元
  {n,m} 比對前一項n到m次
  .* 代表任意字元
           

例子

寫一個c類ip位址的正則

c類ip位址範圍
192~223
0~255
           

繼續閱讀