忘记密码   免费注册 查看新帖 | 论坛精华区
ChinaUnix.net
  平台论坛 博客 微博 读书 人才 精华 文库 自测 | 频道操作系统 开发 数据库 存储 服务器 网络 IT新闻 Linux 下载 Power用户组
最近访问板块 发新帖
查看: 13540 | 回复: 47

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

帖子
43
主题
16
精华
0
可用积分
70
专家积分
0
在线时间
12 小时
注册时间
2008-08-18
最后登录
2011-05-26
论坛徽章:
0
发表于 2009-01-06 14:50:22 |显示全部楼层
有很多行
其中第二列是IP列表,各IP是以','分开的,想干掉重复的IP,怎么做,谢谢了

例如
10.1.2.3,10.1.2.3,10.1.2.3,10.2.3.4,10.2.3.4,10.2.3.4,172.23.2.34,172.23.2.34,172.23.2.34
10.1.2.4,10.1.2.4,10.2.3.78,10.2.3.78,172.23.12.35,172.23.12.35
10.2.1.65,10.2.1.65,10.7.8.79,10.7.8.79

处理后变成这样:
10.1.2.3,10.2.3.4,172.23.2.34
10.1.2.4,10.2.3.78,172.23.12.35
10.2.1.65,10.7.8.79

Rank: 7Rank: 7Rank: 7

帖子
6844
主题
57
精华
2
可用积分
19291
专家积分
857
在线时间
4538 小时
注册时间
2006-09-13
最后登录
2012-02-05
论坛徽章:
0
发表于 2009-01-06 15:30:50 |显示全部楼层
sed -r ':a;s/([0-9]+(\.[0-9]+){3})(.*),\1/\1\3/;ta' urfile
记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。

帖子
43
主题
16
精华
0
可用积分
70
专家积分
0
在线时间
12 小时
注册时间
2008-08-18
最后登录
2011-05-26
论坛徽章:
0
发表于 2009-01-06 15:35:59 |显示全部楼层

回复 #2 ly5066113 的帖子

谢谢了
能讲解下不,看不懂呢,^_^

帖子
43
主题
16
精华
0
可用积分
70
专家积分
0
在线时间
12 小时
注册时间
2008-08-18
最后登录
2011-05-26
论坛徽章:
0
发表于 2009-01-06 15:45:54 |显示全部楼层

回复 #2 ly5066113 的帖子

172.16.19.46
172.16.19.21,172.16.19.21,172.16.19.21,172.26.19.21,172.26.19.21,172.26.19.21   
172.16.19.69,172.16.19.69,172.16.19.69,172.26.19.69,172.26.19.69,172.26.19.69
172.16.19.70,172.16.19.70,172.16.19.70,172.26.19.70,172.26.19.70,172.26.19.70

像这种 还是无法处理

帖子
43
主题
16
精华
0
可用积分
70
专家积分
0
在线时间
12 小时
注册时间
2008-08-18
最后登录
2011-05-26
论坛徽章:
0
发表于 2009-01-06 15:49:40 |显示全部楼层

回复 #4 BlueBlack 的帖子

像这种
172.16.19.46,172.16.19.47
172.16.19.21,172.16.19.21,172.16.19.21,172.26.19.21,172.26.19.21,172.26.19.21
172.16.19.69,172.16.19.69,172.16.19.69,172.26.19.69,172.26.19.69,172.26.19.69
172.16.19.70,172.16.19.70,172.16.19.70,172.26.19.70,172.26.19.70,172.26.19.70
处理后变成这样了:
172.16.19.467
172.16.19.21,172.26.19.21
172.16.19.69,172.26.19.69
172.16.19.70,172.26.19.70

Rank: 5Rank: 5

帖子
1566
主题
194
精华
0
可用积分
7495
专家积分
220
在线时间
829 小时
注册时间
2007-10-11
最后登录
2011-07-15
论坛徽章:
0
发表于 2009-01-06 15:50:16 |显示全部楼层
原帖由 ly5066113 于 2009-1-6 15:30 发表
sed -r ':a;s/([0-9]+(\.[0-9]+){3})(.*),\1/\1\3/;ta' urfile

不知道(.*)有啥用,tim解释一下?
葡萄美酒夜光杯,欲饮琵琶马上催。
醉卧沙场君莫笑,古来征战几人回。

推荐歌曲:NewDivide-LinkinPark

帖子
26
主题
10
精华
0
可用积分
42
专家积分
0
在线时间
56 小时
注册时间
2008-12-15
最后登录
2011-10-21
论坛徽章:
0
发表于 2009-01-06 15:50:39 |显示全部楼层

回复 #1 BlueBlack 的帖子

awk -F "," '{for (i=1;i<=NF;i++) print $i}' test |uniq

这样可以吗?

Rank: 2

帖子
509
主题
31
精华
0
可用积分
1205
专家积分
1
在线时间
4345 小时
注册时间
2007-11-01
最后登录
2012-02-05
论坛徽章:
0
发表于 2009-01-06 15:50:45 |显示全部楼层
比较笨的方法 你可以多用几个pipe
先换成列 sort uniq
然后 替换回去
-----------------------------------------------------------------
GNU bash, version 3.1.17(6)-release (i686-pc-cygwin)

Rank: 5Rank: 5

帖子
1566
主题
194
精华
0
可用积分
7495
专家积分
220
在线时间
829 小时
注册时间
2007-10-11
最后登录
2011-07-15
论坛徽章:
0
发表于 2009-01-06 15:51:31 |显示全部楼层
原帖由 BlueBlack 于 2009-1-6 15:49 发表
像这种
172.16.19.46,172.16.19.47
172.16.19.21,172.16.19.21,172.16.19.21,172.26.19.21,172.26.19.21,172.26.19.21
172.16.19.69,172.16.19.69,172.16.19.69,172.26.19.69,172.26.19.69,172.26.19.69
17 ...

去掉(.*)试试看。
葡萄美酒夜光杯,欲饮琵琶马上催。
醉卧沙场君莫笑,古来征战几人回。

推荐歌曲:NewDivide-LinkinPark

Rank: 2

帖子
509
主题
31
精华
0
可用积分
1205
专家积分
1
在线时间
4345 小时
注册时间
2007-11-01
最后登录
2012-02-05
论坛徽章:
0
发表于 2009-01-06 15:52:34 |显示全部楼层

回复 #6 ILoveMK 的帖子

好像是 保存后面的内容到÷3
给sed下一次 替换使用

貌似
tim的command的问题就是不能处理
开头和结尾2个field重复的问题

[ 本帖最后由 luyi1983 于 2009-1-6 15:54 编辑 ]
-----------------------------------------------------------------
GNU bash, version 3.1.17(6)-release (i686-pc-cygwin)
您需要登录后才可以回帖 登录 | 注册

北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP