在做日誌分析時或者配置分析時,通常會遇到查找出符合某一條件的行,並統計,主要應用的就是grep、awk、sort、uniq、wc五個命令
1. grep命令
grep(global search regular expression(RE) and print out the line,全面搜索正則表達式並把行打印出來)是一種強大的文本搜索工具,它能使用正則表達式搜索文本,並把匹配的行打印出來。
語法格式爲:
grep [option] pattern file //pattern 通常可以爲正則表達式
常見的參數爲:
選項
-a :將 binary 文件以 text 文件的方式搜尋數據
-c :計算找到 '搜尋字符串' 的次數
-i :忽略大小寫的不同,所以大小寫視爲相同
-n :順便輸出行號
-v :反向選擇,亦即顯示出沒有 '搜尋字符串' 內容的那一行!
--color=auto :可以將找到的關鍵詞部分加上顏色的顯示喔!
2.awk命令
awk命令通常是將所列出的行,根據條件打印出某一列或幾列
常用形式爲:awk -F ':' 'BEGIN {print "name,shell"} {if($1="root") print $1","$7} END {print "blue,/bin/nosh"}'
3.sort命令
sort排序原則:sort將文件的每一行作爲一個單位,相互比較,比較原則是從首字符向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。
sort [optional] filename
常用參數:
-u:去除重複行
-r:默認是升序排序,-r是改爲降序
-o:將排序結果寫入到源文件
-n:默認是通過ASCII碼值排序,但是這時會出現10比2小的情況,-n就是說要以數值進行排序
-k和-t:-k是指定以哪一列進行排序,-t是指定分隔符
舉例:
(1)sort -n -t " " -k 2 -k 3 facebook.txt //人數相同的按照員工平均工資升序排序
(2) sort -n -t ' ' -k 3r -k 2 facebook.txt //按照員工工資降序排序,如果員工人數相同的,則按照公司人數升序排序
(3)sort -t ‘ ‘ -k 1.2 facebook.txt //從公司英文名稱的第二個字母開始進行排序
(4)sort -t ‘ ‘ -k 1.2,1.2 -k 3,3nr facebook.txt //只針對公司英文名稱的第二個字母進行排序,如果相同的按照員工工資進行降序排序
4.uniq命令
uniq命令可以去除排序過的文件中的重複行,因此uniq經常和sort合用。也就是說,爲了使uniq起作用,所有的重複行必須是相鄰的。
-i :忽略大小寫字符的不同;
-c :進行計數,即統計該行的重複次數
-u :顯示不存在的行
-d:顯示存在重複的行
5.wc 命令
統計指定文件中的字節數、字數、行數,並將統計結果顯示輸出。該命令統計指定文件中的字節數、字數、行數。如果沒有給出文件名,則從標準輸入讀取。wc同時也給出所指定文件的總統計數。
-c 統計字節數。-l 統計行數。
-m 統計字符數。這個標誌不能與 -c 標誌一起使用。
-w 統計字數。一個字被定義爲由空白、跳格或換行字符分隔的字符串。
-L 打印最長行的長度。
-help 顯示幫助信息
--version 顯示版本信息
[root@localhost test]# wc test.txt
7 8 70 test.txt
8 表示單詞數
70 字節數