sed、awk——運維必須掌握的兩個工具

IT技術精選文摘發表於2018-05-25

今天主要跟大家介紹2個非常霸道的工具,sed和awk,本篇文章將介紹這兩個工具在日常運維中的常用用法,工作中這兩個工具要掌握好了在結合一些管道命令、正規表示式,日常處理事務簡直666啦!

Sed

1.強大的地方

擅長對資料行進行處理,sed是一種流編輯器,處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有改變,除非你使用重定向儲存輸出。利用sed命令可以將資料行進行替換、刪除、新增、選取等特定工作。

動作說明: [n1[,n2]] function
n1, n2 :不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作是需要在 10 到 20 行之間進行的,則『 10,20[動作行為] 

Function一般有以下引數:

a:新增,後面可以接字串,而這些字串會在新的一行出現(目前的下一行)

c: 替換,後面可以接字串,這些字串可以替換 n1,n2 之間的行

d:刪除

i:插入,後面可以接字串,而這些字串會在新的一行出現(目前的上一行)

p:列印,將某個選擇的資料列印出來。通常跟引數-n 一起執行

s:替換,用一個字串替換另一個,注意與c引數的區別

3.舉例 我們用/ etc/passwd檔案來演示,先來看看sed不加引數跟加上-n引數是怎樣的

 

看上圖明白選項一欄-n引數後面的解釋意思了吧,不加引數是輸出了檔案所有資訊並且多列印了第一行的資料,加上-n引數就只列印了第一行的資料,1p就是列印第一行,2p;4,10p就是列印第2行以及第4-10行啦

刪除第1-10行,留意行號變化

 

刪除第1行,第10行,留意行號變化

 

將passwd檔案中包含/sbin/nologin替換為/bin/bash並列印輸出

 

將passwd檔案中第2行的資料替換為test,注意到與s引數的區別了吧

 

在passwd檔案第二行新增test字串

 

在passwd檔案第二行插入test字串

 

刪除passwd檔案的第三行至末尾行

 

Awk

1.強大的地方

擅長對資料列進行處理,就是把資料逐行的讀入,以空格為預設分隔符再將每行切斷,對切斷的部分再進行分析處理。

3.舉例

我們還是以/etc/passwd 檔案為例。以:為分隔符,列印passwd 檔案中每行使用者名稱稱user($1)及使用者uid($3)。補充:$0代表一整行資料的意思

 

列印passwd檔案中uid>=500 的使用者名稱稱及UID

 

列印passwd每一行的資料,並以:為分隔符計算每行的字元總數列印在每行資料的末尾

 

列印passwd檔案中以:為分隔符第三個欄位即UID>=500的資料所在行號

 

想想日常工作中如何要獲取檔案中第幾行第幾列的資料應該如何操作,如列印passwd檔案中第一行與最後一行第一列的資料,sed跟awk結合使用啦。

 

總結:關於sed跟awk日常要用到的用法就說到這裡啦,從事運維的同事一定要熟練運用這兩個工具哦,特別是需要經常做資料彙報的,能減輕很大工作量。

公眾號推薦:

相關文章