Chinaunix

标题: 如何将同一个文件第二列相同的行输出? [打印本页]

作者: jin978347005    时间: 2017-06-25 10:27
标题: 如何将同一个文件第二列相同的行输出?
文件a:

1 abcd
2 defg
3 abcd
4 kdjh
5 hdhi
6 defg

输出文件b:
1 abcd
2 defg
3 abcd
6 defg

不胜感激

作者: haooooaaa    时间: 2017-06-25 11:13
  1. awk 'NR==FNR{a[$2]++;next}a[$2]>1' a a
  2. 1 abcd
  3. 2 defg
  4. 3 abcd
  5. 6 defg
复制代码

作者: jin978347005    时间: 2017-06-25 12:36
回复 2# haooooaaa

再次感谢
作者: liushouqiang12    时间: 2017-06-30 19:48
本帖最后由 liushouqiang12 于 2017-06-30 20:01 编辑

测试用单文件的效率怎么样:
  1. awk '{a[$2]++;b[$2]=(b[$2]"\n"$0)}END{for (i in a){if(a[i]>1) printf(b[i])}}'  a
复制代码


作者: liushouqiang12    时间: 2017-06-30 19:51
本帖最后由 liushouqiang12 于 2017-06-30 20:03 编辑

楼上大神的next更有技术含量,不知道效率上怎么样,没有数据作测试!!!
作者: jin978347005    时间: 2017-07-01 14:09
回复 5# liushouqiang12

效率很不错,也非常感谢你




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2