linux shell程式設計文字處理命令grep

2021-10-21 13:43:45 字數 1614 閱讀 2125

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

使用基本正規表示式

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

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

用途:在檔案中查詢並顯示包含指定字串的行

格式:grep  [選項]...  模式  目標檔案
-i:查詢時忽略大小寫 ignore case

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

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

-r:遞迴搜尋所有檔案

-o:只顯示匹配的內容 -o, --only-matching

元字元:有特殊作用的字元   ^ $ 

基本元字元 ^ $ *

擴充套件元字元 | + ?

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次

.* 代表任意字元

寫乙個c類ip位址的正則

c類ip位址範圍

192~223

0~255

cat test.txt |

egrep

"(19[2-9]|2[01][0-9]|22[0-3])(\.([0-9]|[1-9][0-9]|1[0-9]|2[0-4][0-9]|25[0-5]))"

Linux shell 文字處理工具

本文將介紹linux下使用shell處理文字時最常用的工具 find grep xargs sort uniq tr cut paste wc sed awk 提供的例子和引數都是最常用和最為實用的 我對shell指令碼使用的原則是命令單行書寫,盡量不要超過2行 如果有更為複雜的任務需求,還是考慮p...

Linux Shell 文字處理工具集錦

本文將介紹linux下使用shell處理文字時最常用的工具 find grep xargs sort uniq tr cut paste wc sed awk 提供的例子和引數都是最常用和最為實用的 我對shell指令碼使用的原則是命令單行書寫,盡量不要超過2行 如果有更為複雜的任務需求,還是考慮p...

shell程式設計基礎 文字處理

cut 處理文字的列字串,grep是針對處理行 cut f 2 etc passwd 全部列印,問題是分隔分預設是tab鍵 cut d f 2 etc passwd cut d f 2,4 etc passwd 列印出第二列或者下面的第二列和第四列,2,4不是2 4的範圍cut缺點是不支援空格為分隔...