- 论坛徽章:
- 0
|
两个文件fileA,fileB,存了一堆名字,格式如下:
jack wong
张三
李四
需要计算只包含在某个文件的名字数量。如统计只在B中的名字数量,我的代码如下
- #排序
- sort fileA > fileA.sort
- sort fileB > fileB.sort
- #计算A和B的数量
- awk 'if(!u[$0]){u[$0]+=1;uniqUser+=1} END{print uniqUser, FNR}' fileA.sort
- awk 'if(!u[$0]){u[$0]+=1;uniqUser+=1} END{print uniqUser, FNR}' fileB.sort
- #计算只在B中的数量
- comm -13 fileA.sort fileB.sort > uniq.sort
- awk 'if(!u[$0]){u[$0]+=1;uniqUser+=1} END{print uniqUser, FNR}' uniq.sort
- #删除临时文件
- rm -f fileA.sort
- rm -f fileB.sort
- rm -f uniq.sort
复制代码
(1)觉得写得太复杂了,有简单的方法吗?
(2)名字前后可能包含空格,awk如何做trim操作呢?
(3)文件比较大,每个里面都有几百万记录,效率太低了。。。
请大家指点一下。我学习学习 |
|