免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345
最近访问板块 发新帖
楼主: BlueBlack
打印 上一主题 下一主题

怎样删除某列中重复的字符串? 谢谢 [复制链接]

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
41 [报告]
发表于 2009-01-07 10:17 |只看该作者
原帖由 我是DBA 于 2009-1-7 10:08 发表
awk -F, '{delete a;for(i=1;i<=NF;i++)a[$i]++ ; for(j in a) {printf "%s,", j ;}print ""}' data |sed 's/.$//'

, 分割字段
读入新行处理
1 如果数组a存在,删除之
2 遍历字段,以字段值为索引创建数组a的元素,值为该字段值出现次数。(a[$i]++相当于a[$i] = a[$i] + 1)
3 遍历数组a, 输出索引(字段值)和1个逗号。 (最后一个字段后会有个多余的逗号)
4 输出换行
5 用sed去掉末尾的逗号

论坛徽章:
0
42 [报告]
发表于 2009-01-08 17:43 |只看该作者
简单的方法。弄到UE里。把逗号替换成换行。再贴到excel里。然后,筛选不重复记录,就行啦!

论坛徽章:
0
43 [报告]
发表于 2009-01-09 09:27 |只看该作者
照《unix SHELL实例精解》书上实例改动一下。不知对不对。
awk -F "[, ]" '{ for (i=1; i<=NF; i++) id[$i]++ } END { for (j in id) print j }' file

论坛徽章:
0
44 [报告]
发表于 2009-01-09 09:54 |只看该作者
awk -F "[, ]" '{ for (i=1; i<=NF; i++) id[$i]++ } END { for (j in id) print j, id[$j] }' file
能将所有字段以及重复次数打印出来。
其中172.26.19.21字段有俩种,因为有一个172.26.19.21字段尾部有空格。awk将它另外归为一种。

论坛徽章:
0
45 [报告]
发表于 2009-01-15 19:54 |只看该作者
awk -F, '{delete a;for(i=1;i<=NF;i++){a[$i]++};for(k in a){z++};for(j in a){x++;printf x==z?"%s":"%s,", j};print ""}' data

awk中怎么计算数组长度呢?
哪位高手知道,请教
除了for(k in a){z++}这种方式

论坛徽章:
0
46 [报告]
发表于 2009-01-15 20:02 |只看该作者
awk -F, '{delete a;x=0;for(i=1;i<=NF;i++){a[$i]++};for(j in a){x++;printf x==length(a)?"%s":"%s,", j};print ""}' data

这样就可以了,呵呵

论坛徽章:
0
47 [报告]
发表于 2009-01-15 23:12 |只看该作者
awk -F\, '{for(j=1;j<=NF;j++)a[$j]=1; for(x in a) print x}' filename

我觉得这个应该可以实现吧?
好像也没那么麻烦

不过没有测试,

论坛徽章:
0
48 [报告]
发表于 2009-01-16 08:47 |只看该作者

回复 #41 ynchnluiti 的帖子

终于懂了,非常感谢andy老师。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP