Chinaunix

标题: bash/AWK 或 C 查找相同项 [打印本页]

作者: ulnait    时间: 2013-12-19 15:51
标题: bash/AWK 或 C 查找相同项
本帖最后由 ulnait 于 2013-12-19 15:58 编辑

有下面一个随机数的文本100行:

21 14 18
25 09 17
18 15 61
16 18 41
.    .   .
.    .   .
.    .


如何查找中间相同的项(已知每个字段有且只有一个值相同):例如 18
作者: WilliBhamlll    时间: 2013-12-19 15:59
  1. awk '{for(i=0;i++<NF;)a[$i]++}END{for(i in a)if(a[i]>1)print i}' file
  2. 18
复制代码

作者: zooyo    时间: 2013-12-19 16:33
提示: 作者被禁止或删除 内容自动屏蔽
作者: yaozhibing41001    时间: 2013-12-19 16:47
回复 1# ulnait
  1. [root@mail5 ~]# cat a
  2. 21 14 18
  3. 25 09 17
  4. 18 15 61
  5. 16 18 41
  6. 21 14 18
  7. 25 09 17
  8. 18 15 61
  9. 16 18 41
  10. 21 14 18
  11. 25 09 17
  12. 18 15 61
  13. 16 18 41
  14. [root@mail5 ~]#  awk '{for(i=0;i++<NF;)a[$i]++}END{m=0;for(i in a)if(a[i] > m){m=a[i];x=i}print x}'  a
  15. 18
复制代码

作者: yaozhibing41001    时间: 2013-12-19 16:48
回复 2# WilliBhamlll



这个题目貌似找出现最多的一个数值。。

   
作者: WilliBhamlll    时间: 2013-12-19 16:59
回复 5# yaozhibing41001


    恩,可能是的。
作者: reyleon    时间: 2013-12-19 19:41
  1. cat file | xargs -n1 | sort -n | uniq -c | sort -n | awk 'END{print $2}'
复制代码

作者: 关阴月飞    时间: 2013-12-19 20:21
本帖最后由 关阴月飞 于 2013-12-19 20:22 编辑

回复 1# ulnait

目测一下:
  1. xargs -n1 < file|sort |uniq -d
复制代码

作者: yinyuemi    时间: 2013-12-19 20:41
awk -vRS='\n| ' 'a[$1]++ ==1 {print ;exit}'
作者: lxzkenney    时间: 2013-12-19 21:54
提示: 作者被禁止或删除 内容自动屏蔽
作者: lxzkenney    时间: 2013-12-19 21:57
提示: 作者被禁止或删除 内容自动屏蔽
作者: ulnait    时间: 2013-12-19 22:10
本帖最后由 ulnait 于 2013-12-19 22:25 编辑

恩, 原本是一个剩余定理 同余数组的解法,我这是笨办法,先计算出值 再查找每个字段包含的那个值回复 5# yaozhibing41001


   
作者: yestreenstars    时间: 2013-12-20 00:50
  1. awk '{while(++i<=NF)a[$i]++;i=0}END{for(i in a)if(a[i]>1)print i}'
复制代码





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