需求

假设有个 result_test_upload.log 的文件,里面存放着一些 FastDFS 系统中的 fileid。文本内容如下:

group1/M00/04/08/wKhwglHq1rqAYO2oAAAoAChSBpE0502682  
group2/M00/05/06/wKhwglHq2CGAIs8AAAAoAChSBpE9287977  
......(略)......  

如何统计出分配到每个 group 的文件的总和并将其按 group1、group2、group3 的顺序列出来,以方便观察是否所有的 fileid 均匀的分配到 FastDFS 的 group 中?

方法

cat result_test_upload.log  | grep -o group[0-9][0-9]*  | sort -n -t p -k 2| uniq -c  

其中,grep -o group-0-9][0-9].* 已经把每个 group 名截取出来了,sort -t p 表示以 p 为分隔,-k 2 表示按以 p 为分隔的第二个域来排序,也就是 group1、group2、group3…中的1、2、3。-n 选项则很简单,表示按照group1、group2、group3…groupn 的顺序排列。

通过这一行命令,就能得到类似于:

999 group1  
998 group2  
998 group3  
997 group4  
.......  

的统计结果了。