在linux下的sed工具和awk工具是最常用的文字處理工具,配合grep的使用將產生非常大的威力,下面就來說一下sed和awk的基礎用法,
sed基本用法如下:
sed命令的語法如下所示:
sed [-nefr] [動作]
引數說明:
-n : 使用安靜模式,一般所有來自stdin的資料會被列出到螢幕上,但是 -n 在可以只列出經過 sed 處理過的那一行。
-e : 直接在命令列模式上進行 sed 的動作編輯。
-f : 直接將 sed 的動作解除安裝乙個檔案內, -f filename 則可以執行 filename 內的 sed 動作。
-r : sed 的動作支援的是擴充套件型正規表示式的語法(預設是基礎正規表示式語法)。
-i : 直接修改讀取的檔案內容,而不是由螢幕輸出。
動作說明: [n1],[n2] function
n1,n2:不見得會存在,一般代表選擇進行動作的行數。
舉例來說:如果我的動作是需要在 10 到 20 行之間進行的,則「10,20[動作行為]」
function 有下面這些引數:
c:替換,c 的後面可以接字串,這些字串可以替換n1,n2之間的行!
d:刪除,因為是刪除,所以 d 後面通常不接任何引數。
p:列印,也就是將某個選擇的資料列印出來,通常 p 會與引數 sed -n 一起執行。
s:替換,可以直接進行替換工作。通常這個 s 的動作可以匹配正規表示式!
例如:1,20s/old/new/g 就是。
先練練手,把test檔案中的第一行末尾追加乙個「ok」,要求不換行
命令如下:
以乙個日誌檔案為例,我的日誌訊息如下
用sed命令配合grep顯示第1到第10行所有info訊息,並將訊息輸入到新的檔案中去
命令效果
說完sed,再來說說awk:sed主要是對於行來進行操作,而awk相當與將每一行每乙個字段分開再做處理,awk分析欄位靠的是空格符,例如提取,awk基本用法
基本語法
awk '條件型別1 條件型別2 ...' filename
last-n 5 // 僅取出登陸者的資料前五行(last 可以將登陸者的資料取出來)
如果我還要在這些資訊中取出:賬號與登陸者的ip,且賬號與ip之間以[tab]隔開,那麼可以這麼改命令:
last -n 5 | awk ''
下面還是以test日誌為例,我想要取出前10條資訊中的info資訊中的前3列資訊,第一列和第二列以tab空格分開,第二列和第三列以空格分開,然後輸出到outfile**如下:
sed '1,10p' test| grep "info"|awk '' >outfile
效果如下
然後再將test的10到20行中的trace資訊的1到3列提去出新增到outfile,命令如下
sed '10,20p' test | grep "trace" | awk '' >>outfile
效果如下
然後再利用awk工具提取outfile中第二列等於 76874 且第三列等於trace的訊息
awk '$2==76874&&$3=="trace" ' outfile
效果如下
linux下的sed命令
sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自...
Linux下sed的用法
sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自...
Linux下Sed命令的用法
1.sed簡介 2.定址 可以通過定址來定位你所希望編輯的行,該位址用數字構成,用逗號分隔的兩個行數表示以這兩行為起止的行的範圍 包括行數表示的那兩行 如1,3表示1,2,3行,美元符號 表示最後一行。範圍可以通過資料,正規表示式或者二者結合的方式確定 3.sed命令 呼叫sed命令有兩種形式 se...