linux文本處理三劍客(一)---grep

在linux種有一句話,叫作一切皆文件。文件有個特色,它是個文本。它能夠讀、能夠寫,若是是二進制文件,它還能執行。這樣的話,咱們在使用linux的時候,多數時間都是要和各式各樣文件打交道的。那麼,熟悉文本的讀取、編輯、篩選就是linux系統管理員的必備技能。linux

幸而,在linux中,有三個很牛逼的文本處理工具。它們分別是:grep、sed、awk。下面咱們用三篇文章來簡單講講他們仨。正則表達式

第一個登場的,是grep。它是(global search regular expression and print out the line,全面搜索正則表達式並將其打印到命令行)的縮寫。它是以行來進行搜索的,同時,以行進行輸出。它能夠直接使用,也能夠經過管道符(「|」)來與其餘命令混合使用,達到更好的切割文本的效果。express

 

基本用法:ssh

grep 「選項「  」模式「  文件工具

其中,」選項「是指經常使用的幾種功能,」模式「指要搜的正則表達式,文件則表明搜索對象。學習

下面一個一個介紹:測試

* 經常使用的一些功能選項:spa

-v: 顯示版本號命令行

-E: 默認模式爲擴展正則表達式,至關於使用了egrep對象

-F: 默認模式爲固定字符串列表,至關於使用了fgrep

-n: 輸出行數

-v: 反向查找

-i: 忽略大小寫

-o:只顯示被選中的表達式,不顯示整行

-w: 匹配整詞,精確的單詞,不是模糊匹配。單詞的兩邊必須是非字符符號,以保證中間是一個完整的單詞。

-A 行數:匹配到搜索行以及該行下面n行

-B 行數:匹配到搜索行以及該行上面n行

-C 行數:匹配到搜索行以及該行上下n行

 

* 經常使用的一些模式介紹:

‘^$’:空行

‘.‘: 任意一個字符

[xyz]: x、y、z任意一個

[[:space:]]: 空格及tab

[a-zA-Z]: 至關於[[:alpha:]]

[^123]:除了123之外的字符,這裏的^和通配符裏邊的"^"意義徹底不同,且在正則表達式中,這些符號的意義與通配符中的意義徹底不同。若是按照通配符的標準來學習正則表達式,那就GG了~

[a-zA-Z0-9]: 至關於[[:alnum:]]

[A-Z]: 至關於[[:UPPER:]]

[a-z]: 至關於[[:lower:]]

[[:punct:]]: 至關於標點符號

 

下面舉幾個例子,來演示如下它們怎麼使用:

我在/tmp下創建了一個test_file,抄了Bob Dylan的《make you feel my love》進去。咱們來測試:

1) cat test_file|grep -w 'love',精準查找關鍵詞'love'.

 

2) cat test_file|grep -v 'feel my love',grep不會打印帶有'feel my love'的行。

 

3)cat test_file |grep -A 5 'love',grep會打印找到的love行,並其下邊的5行一塊兒打印。

 

4)cat test_file|grep -n '^$',輸出空格行行數;若想去除空格行,可使用grep -v '^$';若想去除註釋行,可用egrep -v '#'。

 

5) 去除/etc/ssh/sshd_config的空格和註釋,並打印行數。其中,-v表示反向輸出;-E表示使用擴展正則表達式;-n表示輸出行數。而'^#|^$'則表示,以"#"開頭的註釋和空行。|表示「或」的意思。

相關文章
相關標籤/搜索