grep與awk用法:2個最強搜尋命令的Linux實戰教學

grep與awk用法是一定要會的Linux命令,它們可以高效率搜尋文件內容。本文以使用者帳號為例,介紹如何使用正規表示法的參數設定,幫助你找到想要的資料。

一、etc/passwd文件

passwd是一個設定密碼的命令,它其實也是一個Linux系統文件,通常Linux系統配置文件都是放在「etc」資料夾中,例如輸入命令:「cat /etc/passwd」,實際檢視「etc」資料夾中的「passwd」文件,,發現到它會列出一長串的名稱清單出來。這裡截圖沒有辦法全部展現,可以注意到最後一筆「zanzan」是贊贊小屋自己新增的使用者帳號,它的序號是「1000」。

一、etc/passwd文件

二、| head附加命令

由於上個步驟的文件內容較多,可以在原來命令後面加一個「| head」,代表是要在前面已經取得文件清單的基礎上,再執行head命令,於是取得前10筆的資料。這裡看到第一筆是root系統使用者,也就是天字第一號的管理者帳號。

二、| head附加命令

三、tail取得末三筆

上個步驟是附加head條件篩選前10筆,在此則是附加tail命令,它預設是篩選取得末十筆,不過這裡加上一個參數「-n 3」,表示只取三筆,因此就是最後三筆,其中最後一筆當然會跟先前第一個步驟一樣是「zanzan」。

三、tail取得末三筆

四、正規表示法是什麼

除了取得前後幾筆資料,還可以進行關鍵字查找,例如這裡加上「|grep “zanzan”」,代表要使用簡單的正規表示法取得包含「zanzan」的資料。

grep全稱為globally search a regular expression and print,意思是針對整份文件以特定規則搜尋並且傳回符合條件的內容,基本功能類似於Excel的Find函數或者篩選條件,但是遠比Excel還要複雜,因為隨著Unix到Linux系統不斷演進,發展成一個很成熟、具有多種命令參數可以設定的強大工具。

四、正規表示法是什麼

五、\|^符號的作用

想要同時取得「root」以及「zanzan」的結果,正規表示法可以設定為「zanzan/|root」,其中的豎線作用是條件聯集,也就是或者的邏輯判斷,注意到這裡加了「/」,作用類似於鍵盤shift鍵進行功能切換,在此是將單純文字切換成系統符號,所以本來是「zanzan|root」字串,加上斜線轉換作用之後,變成是「zanzan」和「root兩個文字的或者條件。

不過由於「zanzan/|root」是關鍵字的包含規則,而在帳號裡面有一個「Operator」,雖然它的名稱沒有包含關鍵字,但是它的屬性包含了關鍵字「root」,因此也算是符合條件。

為了避免得到不想要的結果,進一步優化正規表示,在兩個帳號前面都加上一個向上箭頭:「^zanzan/|^root」,「^」作用是以某個字串開頭才算符合條件,等於進一步限制是以zanzan或者 root開頭才算符合條件,如此得到預期結果,只有「root」及「zanzan」兩個帳戶。

五、\|^符號的作用

六、wc字數sort排序

除了查找資料之外,很多時候想要進行統計或者排序,可以在上個步驟命令的基礎上,再加上「|wc」,其中「wc」作用是字數統計(words count),沒有其他參數它會計算出多少筆資料、包含多少個字、多少個字元,加上參數「-l」則是單純的幾筆資料。

此外還可以加上「sort」進行排序,預設是依照英文字母由A到Z排序,想要要反過來可以在後面再加上一個「- r」。

六、wc字數sort排序

七、grep與awk用法

最後再補充在Linux另一個強大命令:awk,其主要作用和grep同樣在於處理較為複雜的文字資料,它有很多種用法,在此介紹一個常見用法,等於是執行Excel資料剖析。例如在這裡輸入命令:「awk – F “:” ‘{print$1}’」。這裡的「-F」代表指定分隔符號,而分隔符號便是雙引號中的冒號,接著再加上簡單的一行程式碼:「’{print$1}’」,意思是列印第一欄資料,因此得到的結果就是比較乾淨的「Root」和「zanzan」。

grep與awk用法:2個最強搜尋命令,Linux實戰教學

Linux的2個必學工具

這篇文章主要內容其實很簡單:查找 Linux系統的使用者帳號資料。不過由於所得到的資料較多,過程中用到了grep正規表示法和awk文件規範化,這兩個命令正是Linux系統處理文字資料的兩大工具,在利用熟悉的Excel處理資料通常會用到篩選與排序或者資料剖析,而在本篇文章只要輸入簡單命令參數便能執行和Excel一樣的資料處理,由此可見Linux系統命令的強大之處。

本文章講解影片:

YouTube video

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

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

最新文章: