免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3812 | 回复: 11

按列提取所有列重复行 [复制链接]

论坛徽章:
0
发表于 2010-03-02 17:00 |显示全部楼层
如何按某列提取某列重复的所有行, 比如:

111|asdf|12345
222|5435|sdfgsdg
111|sdgffd|erytret
333|etry

要得到按第一列有重复的所有行, 如下:

111|asdf|12345
111|sdgffd|erytret

急。。。。谢谢大家

论坛徽章:
0
发表于 2010-03-02 17:10 |显示全部楼层
sed -n '/111/p'

论坛徽章:
0
发表于 2010-03-02 17:13 |显示全部楼层
  1. awk -F "|" '{n=a[$1]++;if (n==0) v=$0;else {if (n==1) print v;print $0}}' file  
复制代码

论坛徽章:
0
发表于 2010-03-02 17:14 |显示全部楼层
本帖最后由 bbgg1983 于 2010-03-02 17:23 编辑

我穿越来的

论坛徽章:
0
发表于 2010-03-02 17:19 |显示全部楼层
回复 3# ywlscpl


    谢谢,3楼思路是什么?谢谢

论坛徽章:
0
发表于 2010-03-02 17:20 |显示全部楼层
awk -F'|' '{a[$1]=a[$1](NR==1?$0:"\n"$0)}x[$1]++{b=$1}END{for(i in a) if (i==b) print a[i]}' file

grep ^`awk -F'|' 'a[$1]++{print $1}' file`\| file

论坛徽章:
0
发表于 2010-03-02 17:25 |显示全部楼层
回复 5# cosoo


    计数,$1第一次出现时把改行存到变量v中,第二次出现时打印变量v,第2+次出现打印本行

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
发表于 2010-03-02 17:39 |显示全部楼层
awk -F '[|]' 'NR==FNR{a[$1]++;next}a[$1]>1' urfile urfile

论坛徽章:
0
发表于 2010-03-02 19:47 |显示全部楼层
晕~理解错了呵呵丢人了
BEGIN { FS = "|"}
{
   array[$1]++
   value[$1]=$0"\n" value[$1]
      
}
END{
     for ( i in value ){

        if ( array[i] > 1){

         print value[i]
   }
这个没问题
}

        
}
}

论坛徽章:
0
发表于 2010-03-03 07:50 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP