分析linux命令中一r,用linux命令分析文件(排序,統計)

最近有個項目,需要對在liunx服務器上生成的日志文件進行分析,文件格式如下:

id               time

1001,2011-08-19 00:00:00

1002,2011-08-19 01:00:00

1001,2011-08-19 02:00:00

1003,2011-08-19 03:00:00

需要排重算出id的個數,固然使用php也可以分析結果,不過使用linux命令更方便,一行搞定。

linux命令如下:

排重后id個數

cat ****.txt  | awk '{print $1}'  |  sort | uniq -c | wc -l

按id出現次數排序

cat ****.txt  | awk '{print $1}'  |  sort | uniq -c | sort -k 1 -n -r | wc -l

將結果導入文件

cat ****.txt  | awk '{print $1}'  |  sort | uniq -c | sort -k 1 -n -r | wc -l > result.txt

命令解析:

sort:表示前面輸入的結果文件中的內容進行排序。sort命令是對於每一行的內容根據字典序(ASCII碼)進行排序,這樣可以保證重復的記錄時相鄰的。

awk ‘{print $1}’ :日志記錄中的第一個字段。

uniq –c:表示合並相鄰的重復記錄,並統計重復數。因為uniq -c 只會合並相鄰的記錄,所以在使用該命令之前需要先排序。

sort –k 1 -n -r|wc –l:經過uniq -c 處理之后的數據格式形如"2 data",第一個字段是數字,表示重復的記錄數;第二個字段為記錄的內容。我們將對此內容進行排序。sort -k 1表示對於每行的第一個字段進行排序,這里即指代表重復記錄數的那個字段。因為sort命令的默認排序是按照ASCII,這就會導致按從大到小進行排序時,數值2會排在數值11的前面,所以需要使用-n 參數指定sort命令按照數值大小進行排序。-r 表示逆序,即按照從大到小的順序進行排序。

wc命令

wc命令的功能為統計指定文件中的字節數、字數、行數, 並將統計結果顯示輸出。

語法:wc [選項] 文件…

說明:該命令統計給定文件中的字節數、字數、行數。如果沒有給出文件名,則從標准輸入讀取。wc同時也給出所有指定文件的總統計數。字是由空格字符區分開的最大字符串。

該命令各選項含義如下:

- c 統計字節數。

- l 統計行數。

- w 統計字數

參考文章:

http://www.gnbase.com/thread-907-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值