Unix组合命令的妙用

来源:互联网 发布:北京外国语网络教育 编辑:程序博客网 时间:2024/05/16 14:38

    对于Unix的基本命令,想必大家定都不会陌生,因为我们日常工作中都会使用到。这里笔者就不再累述了,只是浅谈一下Unix组合命令的妙用。

     事件回放:去年业务部门曾提出了一个临时统计需求,大致内容是:根据所提供的号码清单文件,汇总出每个省份对应的手机号码个数。清单文件为文本文件,为了查看直观,将扩展名改为.csv,容量大约有75M,清单文件共有两列,第一列对应省份,第二列对应手机号码。部分内容如下:

贵州,13508524394

宁夏,13995117825

北京,13810451934

湖南,13511116394

北京,13810272429

湖北,13407180229

黑龙江,13503607235

北京,13810347938

北京,13401023582

福建,13400502160

甘肃,13519012419

北京,13810457460

北京,13810404861

河北,13400105932

北京,13401033000

北京,13401033000

江苏,13400027774

江苏,13400027774

江苏,13402634765

湖南,13467323605

四川,13518115628

河北,13400129046

。。。

      解决方案:采用Unix的组合命令,非常容易统计出结果。以下是笔者在10.2.2.97上测试运行的过程,仅供参考:

[service@aspire-devsvr97:/tmp/zzg]$cat 1.csv | awk -F',' '{ print $1}' |sort | uniq -c >> sum_mobile_pickup.log

[service@aspire-devsvr97:/tmp/zzg]$more sum_mobile_pickup.log

  36708 上海

  76318 云南

   8177 内蒙古

 913152 北京

 106512 吉林

  75132 四川

  54419 天津

  15849 宁夏

  17343 安徽

  28347 山东

 112734 山西

 750573 广东

   8599 广西

 117380 新疆

   1353 未知省

 373835 江苏

 110499 江西

 157631 河北

  39734 河南

 114936 浙江

   3203 海南

 122450 湖北

  78046 湖南

 101102 甘肃

 177323 福建

   1946 西藏

 113077 贵州

  87951 辽宁

  72045 重庆

 156811 陕西

   1462 青海

  89902 黑龙江

命令简述:

cat:查看特定文件的内容

|:管道是一个操作符,它把输入和输出重定向结合在一起,从而将一个命令的输出立即作为另一个命令的输入。

Awk:将数据文件中的记录行与提供的模式相匹配。如果没有提供模式,awk将匹配所有行。

‘,’:对于.csv文件格式,用符号,分割;对于.txt文件格式,用符号’/t’分割。

$1:变量$1包含从记录项的开头一直到第一个分隔符为止的文本。

sort:以特定的次序对命令或文件的输出进行排序。

uniq去重,对于那些连续重复的行只显示一次。

命令最终运行效果图如下所示:

原创粉丝点击