linux命令--查找與統計(grep、awk、sort、uniq、wc)

在做日誌分析時或者配置分析時,通常會遇到查找出符合某一條件的行,並統計,主要應用的就是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

7 表示行數

8 表示單詞數

70  字節數










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章