首頁 php教程 PHP开发 Linux中grep指令的12個實作例子

Linux中grep指令的12個實作例子

Dec 13, 2016 pm 02:38 PM

grep是每個Linux發行版都預先安裝的一個強而有力的檔案模式搜尋工具。無論何種原因,如果你的系統沒有預先安裝它的話,你可以很容易的通過系統的套件管理器來安裝它(Debian/Ubuntu系中的apt-get和RHEl/CentOS/Fedora系中的yum) 。

$ sudo apt-get install grep #Debian/Ubuntu $ sudo yum install grep #RHEL/CentOS/Fedora

我發現使用現實世界中的真實例子讓你投身其中是讓你接觸grep命令的最容易方式。

1.搜尋並尋找檔案

假設你已經在你的電腦上安裝了一個全新的Ubuntu,然後你打算卸載Python。你瀏覽網頁尋找教程,但你發現有兩個不同版本的Python在使用,而你不知道你的Ubuntu安裝器到底在你的系統中安裝了哪個版本的Python,也不知道它安裝了哪些模組。解決這個煩惱只需簡單的執行以下指令:

$ sudo dpkg -l | grep -i python

輸出範例

  ii  python2.7         2.7.3-0 version 2.7)
  ii  python2.7-minimal 2.7.3-0ubuntu3.4 Minimal subset of the Python language (version 2.7)
  ii  python-openssl 製作
  ii  python-pam        0.4. 2-12.2ubuntu4 A Python interface to the PAM library

首先,我們運行dpkg -l列出你係統上安裝的.deb套件。接著,我們使用管道將輸出結果傳輸給命令grep -ipython,這一步可以簡單解釋為把結果傳輸給grep然後過濾出所有含有python的項,並返回結果。 –i選項用來忽略大小寫,因為 grep 是大小寫敏感的。使用選項-i是個好習慣,除非你打算進行更細節的搜尋。

2.搜尋和過濾文件

grep還可以在一個或多個文件裡用於搜尋和過濾。讓我們來看一個這樣的情景:

你的Apache網頁伺服器出現了問題,你不得不從許多專業網站裡找一個發文詢問。好心回覆你的人讓你貼上來你的/etc/apache2/sites-available/default-ssl檔案內容。假如你能移除掉所有的註解行,那麼對你,對幫你的人,以及所有閱讀該文件的人,不是更容易發現問題嗎?你當然可以很容易的做到!只要這樣做就可以了:

$ sudo grep -v "#" /etc/apache2/sites-available/default-ssl

選項-v是告訴grep指令反轉它的輸出結果,意思是不輸出匹配的項,做相反的事,印出所有不匹配的項。這個例子中,有#的是註解行(譯註:其實這個指令並不準確,包含「#」的行不全是註解行。關於如何精確匹配註解行,可以了解更多的關於正規表示式的內容。 )。

3.找出所有的mp3檔案

grep指令對於過濾來自於標準輸出的結果非常有用。例如,假設你的一個資料夾裡面全是各種格式的音樂檔案。你要找出藝人jayZ的所有mp3格式的音樂文件,裡面也不要有任何混合音軌。使用find指令再結合管道使用grep就可以完成這個魔法:

$ sudo find . -name ".mp3" | grep -i JayZ | grep -vi "remix""

在這個例子中,我們使用find指令印出所有以.mp3為後綴名的文件,接著將其使用管道傳遞給grep -i過濾和打印出名字為“JayZ”的文件,再使用管道傳送給grep -vi以便過濾掉含有“remix”的項目。的行以及行號,分別控制在字串前或字串後顯示的行數。

$ sudo ifconfig | grep -A 4 etho $ sudo ifconfig | grep -B 2 UP

5.在匹配字串周圍列印出行號

grep命令的-C選項和例4中的很相似,不過列印的不是在匹配字串的前面或後面的行,而是印出兩個方向都匹配的行(譯註:同上面的記憶竅門一樣:-C=center,以此為中心): $ sudo ifconfig | grep -C 2 lo

6.計算匹配項的數目

這個功能類似於將grep輸出的結果用管道傳送給計數器(wc程式),grep內建的選項可以達到同樣的目的:

$ sudo ifconfig | grep -c inet6

7.按給定字串搜尋檔案中匹配的行號

當你在編譯出錯時需要調試時,grep命令的-n選項是個非常有用的功能。你搜尋的內容在文件的哪一行:

$ sudo grep -n "main" setup.py

8.在所有目錄裡遞歸的搜尋

假若你要在目前資料夾裡搜尋一個字串,而目前資料夾裡又有很多子目錄,你可以指定一個-r選項以便於遞歸的搜尋: $ sudo grep -r "function" *

9 .進行精確匹配搜尋

傳遞-w選項給grep命令可以在字符串中進行精確匹配搜索(譯註:包含要搜索的單詞,而不是通配)。例如,像下面這樣輸入:

$ sudo ifconfig | grep -w “RUNNING”

將列印出含有引號內匹配項的行。另外,你還可以試試這個:

$ sudo ifconfig | grep -w “RUN”

搜索這個匹配項時,若搜索的東西里面沒有這樣的一個單獨的單詞,將什麼也不會返回。

10.在Gzip壓縮檔中搜尋

我們也要關註一下grep的衍生應用。第一個是zgrep,這個與zcat很相似,可以用在gzip壓縮過的檔案。它有與grep相似的指令選項,使用方式也一樣:

$ sudo zgrep -i error /var/log/syslog.2.gz

11.在檔案中符合正規表示式

egrep是另一個衍生應用,代表著「擴展全域正規表示式」。它可以識別更多的正則表達式元字符,例如at + ? | 和()。在搜尋原始碼檔案時,egrep是一個非常有用的工具,還有其他的一些零碎程式碼檔案的搜尋需要,使得這樣的搜尋能力成為必要。可以在grep命令中使用選項-E來啟用它。

$ sudo grep -E

12.搜尋一個固定匹配字串

fgrep用於在一個檔案或檔案清單中搜尋固定樣式的字串。功能與grep -F同。 fgrep的一個通常用法為傳遞一個含有樣式的文件給它:

$ sudo fgrep -f file_full_of_patterns.txt file_to_search.txt

這僅僅是grep命令的開始,你可能已經注意到,它對於實現各種各樣的需求簡直是太有用了。除了這種我們運行的這種只有一行的命令,grep還可以寫成cron任務或自動的shell腳本去執行。保持好奇心,試驗一下man頁的各個選項,為實現你的目的寫出一些grep表達式吧。


本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1423
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24