bbs.ChinaUnix.net
首页 | 微博 | 新闻 | Linux | FreeBSD | AIX | Windows | 博客 | 论坛 | 存储 | 网络 | 人才 | Wiki | 资料 | 读书 | 手册 | 下载 | 空间 | 搜索
  免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


怎样删除某列中重复的字符串? 谢谢

  首页 » 论坛 » Shell »
[打印] [收藏] [本帖文本页] [推荐此主题给朋友]

有很多行
其中第二列是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



sed -r ':a;s/([0-9]+(\.[0-9]+){3})(.*),\1/\1\3/;ta' urfile
__________________________________
记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。



回复 #2 ly5066113 的帖子

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



回复 #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

像这种 还是无法处理



回复 #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





QUOTE:
原帖由 ly5066113 于 2009-1-6 15:30 发表
sed -r ':a;s/([0-9]+(\.[0-9]+){3})(.*),\1/\1\3/;ta' urfile


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

推荐歌曲:NewDivide-LinkinPark



回复 #1 BlueBlack 的帖子

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

这样可以吗?



比较笨的方法 你可以多用几个pipe
先换成列 sort uniq
然后 替换回去
__________________________________
-----------------------------------------------------------------
GNU bash, version 3.1.17(6)-release (i686-pc-cygwin)






QUOTE:
原帖由 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



回复 #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)



Copyright © 2001-2010 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - ChinaUnix - Archiver - WAP - TOP