且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

linux shell之提取分类数据

更新时间:2022-09-27 17:38:51

 前段时间,由于shell相关知识掌握比较少,同事给了一任务让我去做,于是第一时间让自己想到了运用oracle数据库,导来导去,人肉了一番,最后由于时间关系还是放弃了,让他自己做去了,没想到同事是早就做了,只不过是想人肉一下而已。
        近来开始着手写相关shell的知识了,步入正题;
同事给的数据是这样的:
3010 BBB [email]AA@aaa.com[/email] aaa-产品技术及用户体验部 资深总监 11616 13700000000 AAAV 卜鹰 assdd
 
上面这数据只是其中一条数据并不是分隔开来的,而且排列是无序的,员工人数达1000多的员工资料,要做的事是把部门分隔开(即一级部门是哪些,二级部门是哪些等)。上面的部门为:aaa-产品技术及用户体验部
下面开始;文件名为test
 
 
输出一级部门命令:
 awk '{print $4}' test|awk -F '-' '{ print $1}'|sort|uniq
输出二级部门命令:
awk '{print $4}' test|awk -F '-' '{ print $1,$2}'|sort|uniq
其它类推
上面的awk命令用于分隔作用
 
或者使用下面命令也可
awk '{print $4}' test |awk '{if ($1 ~ /^aaa/) print $1}'|sort|uniq -c
解释下相关命令,用cat提取相关数据传送给awk,awk打印出以一级部门为aaa的相关部门数据传递给sort排序,再使用uniq命令去除重复的数据,uniq -c是点相关部门的相关人数
本文转自 qwjhq 51CTO博客,原文链接:http://blog.51cto.com/bingdian/127593