grep 、sed、awk被稱為linux中的"三劍客"。
功能特點:
grep適合查詢功能
sed適合取行和替換
awk適合取分隔後的列
下面對這3個命令進行乙個實踐,另附加正規表示式。
1、grep檢視檔案中是否包含有指定的字段並列印出來,常用來查詢日誌、埠等
#檢視檔案中中含有8080欄位的行
grep 8080 file
確定8080欄位在檔案中的行數
grep -n 8080 file
#確定redis在檔案中的行數並且忽略大小寫
grep -n -i "redis"
file
#匹配當前目錄下所有字尾為conf檔案含有過濾欄位的內容
grep
'redis' *.conf
2、過濾掉指定的日誌資訊(即含有關鍵字的行不顯示)
grep -v '關鍵字'
file
3、檢視日誌中的含有關鍵字error,列印行
4、grep只能按分鐘和秒進行查詢日誌
#查詢34分到35分的日誌內容
grep
'11 may 2020 10:3[4-5]' redis_6379.log
注:在此按小時會報錯,可用sed命令,下面有介紹
5、查詢埠、服務資訊
#查詢統計6379埠的連線數
netstat -nat|
grep -i "6379"
|wc -l
#查詢redis服務的埠、pid資訊
用於編輯匹配到的文字
1、取消#,去掉注釋
sed -i -e '/name/s/^#//' /root/autoredis.sh
#等價於sed -i 's/^#name/name/' /root/autoredis.sh
2、增加注釋
sed -i 's/^name/#&/' /root/autoredis.sh
## 這條命令是替換以name開頭的 ,&的意思是匹配任意字元
#將每一行結尾若為 . 則換成 !
sed -i 's/\.$/\!/g' rest
4、同時執行兩條命令
#同時去掉name、info前面的注釋
sed -i -e '/name/s/^#//' \-e '/info/s/^#//' /root/autoredis.sh
5、一次性多行注釋
sed -i '2,5s/^/#/' filename
#vi輸入中同樣適用
6、取消多行注釋
sed -i '2,5s/^#//' filename
7、 根據日期查詢日誌
sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p' test.log
注意:其中日期由系統日誌中的具體格式決定
8、利用 sed 直接在 檔案最後一行加入 #this is a test:
sed -i '$a # this is a test'
file
9、使用sed -n查詢,並且輸出至aa.log檔案
sed -n 『/mar 15 19:01:01/,/mar 15 23:01:01/p』 cron >aa.log
注意 開始時間、結束時間一定要和linux裡面的顯示時間保持格式一致,且一定要是日誌裡面有的時間點,否則查詢不出來或者查詢結果不符合預期。
(起始時間不是的話,查詢無結果。結束時間不是的話,查詢至日誌的最後結束時間)
對分隔後的行中的列進行處理,也可進行格式化輸出
awk
[options]
'begin pattern end'
file
1、去掉以#開頭的行,再重定向到aaa.log中
具體可以參考:
正規表示式,又稱規則表示式。通常被用來檢索、替換那些符合某個模式(規則)的文字。
linux命令三劍客grep sed awk
grep cinvabc word filename c 匹配的行數,輸出行數 grep c install create.log2.i 匹配不區分大小寫,輸出所以內容 grep i dddd test3.n 輸出所有並顯示行數 4.v 取反,輸出所有沒有 install 的行 5.r 查乙個目錄下...
文字三劍客
檔案萬用字元和正規表示式 文字過濾工具grep linux系統中,一切皆檔案。強大的文字編輯和處理工具便必不可少了,在linux系統中,有文字處理三劍客 grep,sed,awk。在進行介紹三大工具前,我們先總結一下檔案萬用字元和正規表示式。檔案萬用字元主要就是對檔案的查詢進行檔名的模糊查詢,而正規...
三劍客 高階
awk 是一種程式語言,用於在linux unix下對文字和資料進行處理 awk 資料可以來自標準輸入,乙個或多個檔案,或其他命令的輸出 awk 通常是配合指令碼進行使用,是乙個強大的文字處理工具。01.進行逐行掃瞄檔案,從第一行到最後一行 02.尋找匹配的特定模式的行,在行上進行操作 03.如果沒...