Linux grep用法:1個搜尋關鍵字務必要學會的指令

Linux grep用法可以設定各種條件搜尋關鍵字,又稱為正規表示法,因為在執行命令檢視文件時,很需要就文字資料進行篩選查找,本文介紹如何搭配參數使用。

一、cat檢視文字檔

範例是論語前幾段的文字,首先用Linux cat命令查看「論語.txt」這個檔案,便可以瞭解文字檔的內容。

一、cat檢視文字檔

二、Linux grep用法

grep」命令最基本且核心的功能是關鍵字查找,例如在這裡以「子曰」作為關鍵字,可以找到一共有5行內容是符合這個關鍵字條件。

Linux grep用法:1個搜尋關鍵字務必要學會的指令

三、加上行號參數-n

在找到關鍵字的基礎上可以進一步設定參數,例如這裡的「-n」代表要加上行號的意思,因此這裡的『子曰:「學而時習之…」』是在原始文件的第五行。

三、加上行號參數-n

四、搜尋關鍵字統計

接下來補充幾個常用參數,例如「-c」是計算有多少筆資料符合條件;「-v」代表反過來,如果原來是查找「子曰」作為條件,加上「-v」就會查找不含子曰的內容,此外不同參數還能合併起來,例如「-cv」作用是統計次數,而且是反過來尋找不符合條件的資料筆數。

四、搜尋關鍵字統計

五、首字正規表示法

除了以關鍵字查找,實務上常常會用首字碼作為條件進行查找,熟悉Excel的讀者應該知道這方面是屬於萬用字元「*」的用法,而Linux grep命令的首字碼查找是在關鍵字前面加一個「^」向上符號,如同截圖所示便會查找到以「子曰」開頭的內容,比較先前第二步驟關鍵字查找的結果,像「有子曰」、「曾子曰」這樣的內容雖然「子曰」符合關鍵字,但並非以「子曰」開頭,因此不符合條件,這個算是正規表示法基礎的應用。

五、首字正規表示法

六、$符號末字查找

除了首字查找,當然也可以進行末字查找,grep命令是使用特殊符號「$」表示,例如在這裡要尋找「君子乎」結尾的內容,正常是輸入:『”君子乎?$」”』,但是卻發現沒有任何結果,這是因為原始文件的問號「?」是全形的「?」,所以輸入半形的話會查找不到,而第2次改成全形的「?」:『”君子乎?$」”』,便可以找到想要的結果。

六、$符號末字查找

七、空白列查找指令

先前第四步驟提到把不同參數合併起來使用,而不同的查找符號,例如首字查找和末字查找也可以合併起來:「”^$”」,其作用是會把空白列或者說空白行查找出來,後面如果再加一個參數「-c」會計算出文件中有7行空白列,進一步配合「-v」進行條件反轉,實質上便是排除空白列。由於在實務上原始文件常常會有許多用於排版的空白列,而在檢視內容資料時並不需要,因此這裡介紹的正規表示法非常好用。

七、空白列查找指令

grep英文全名是什麼

Linux的grep命令全名可以簡單理解為「Global Regular Expression and Print),中文通常稱之為正規表示法,本文介紹最常用到的查找條件以及參數,透過文章簡單範例應該能體會到它是非常強大的關鍵字搜尋技能,因此類似的查找機制幾乎在所有主流的程式語言都有,例如python的re套件,甚至是Office Excel或Google試算表工具都可以使用類似的功能,而除了這篇文章所介紹用法,Linux正規表示法還有其他許多的查找條件以及查找符號的規則,並且主要是在和其他的Linux命令搭配使用,這部分後續有適當的範例再繼續分享。

本文章講解影片:

YouTube video

學習更多相關技巧,前往贊贊小屋Linux教學中心:

Linux教學:電腦系統命令,1個程式入門必學工具

最新文章: