免费注册 查看新帖 |

Chinaunix

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

如何按域来sort -u或uniq -u ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-03-28 16:32 |只看该作者 |倒序浏览
比如:

$cat filename
robot 3 xxx 10 @@
amyru 4 xxx 30 (&
cindy 3 zzz 50  %%
blue 9 yyy 30  ##

如果按域来取出唯一性的行,应该用什么

结果比如是这样,按第三个域来取就是

amyru 4 xxx 30 (&
cindy 3 zzz 50  %%
blue 9 yyy 30  ##

按第四个域来取就是
robot 3 xxx 10 @@
amyru 4 xxx 30 (&
cindy 3 zzz 50  %%

以下同理,我看uniq的选项有个-f(有些shell是-n) 这个的意思是忽略掉某个域,但是自己试了又不行

假如有什么类似sort -k6 -u来处理就好了,保证被指定的某个域的唯一性

有人知道么?

论坛徽章:
0
2 [报告]
发表于 2005-03-28 20:32 |只看该作者

如何按域来sort -u或uniq -u ?

如果一定要用uniq中-f的用法的话,可以这样

  1. sort -k3,3 txt6|awk '{print $1,$2,$4, $5, $3}'|uniq -f4 |awk '{print $1,$2,$5,$3,$4}'
复制代码

结果

  1. amyru 4 xxx 30 (&
  2. blue 9 yyy 30 ##
  3. cindy 3 zzz 50 %%
复制代码


不过顺序与楼主写的有点不一样。
其实不必如此

  1. sort -k3,3 txt6|awk '{if(a!=$3){print;a=$3}}'
复制代码

结果

  1. amyru 4 xxx 30 (&
  2. blue 9 yyy 30  ##
  3. cindy 3 zzz 50  %%
复制代码

论坛徽章:
0
3 [报告]
发表于 2005-03-28 21:32 |只看该作者

如何按域来sort -u或uniq -u ?

uniq -f是跳过多少个域进行比较,-s是跳过多少个字符,-W是最多对多少个域进行比较,-w是最多对多少个字符进行比较,现在您想到改怎么办了么?
对了,
  1. uniq -f2 -W1 file
复制代码
就是这样

论坛徽章:
0
4 [报告]
发表于 2005-03-28 22:36 |只看该作者

如何按域来sort -u或uniq -u ?

我的linux上没有W选项

论坛徽章:
0
5 [报告]
发表于 2005-03-29 09:27 |只看该作者

如何按域来sort -u或uniq -u ?

我的也没有,我是 RHEL3.0

论坛徽章:
0
6 [报告]
发表于 2005-03-29 14:06 |只看该作者

如何按域来sort -u或uniq -u ?

那就用li2002兄的方法了~

论坛徽章:
0
7 [报告]
发表于 2005-03-29 14:13 |只看该作者

如何按域来sort -u或uniq -u ?

[quote]原帖由 "一梦如是"]那就用li2002兄的方法了~[/quote 发表:


我试了一下在linuxsir上有人说的

可以
  1. sort -u +5 -6
复制代码
可以的,hoho

论坛徽章:
0
8 [报告]
发表于 2005-03-29 14:55 |只看该作者

如何按域来sort -u或uniq -u ?

sort -u +5 -6


这个是什么意思?我怎么用了就不行?

论坛徽章:
0
9 [报告]
发表于 2005-03-29 15:03 |只看该作者

如何按域来sort -u或uniq -u ?

[quote]原帖由 "killua"]以的,hoho[/quote 发表:


你这样的结果是
robot 3 xxx 10 @@
blue 9 yyy 30  ##
cindy 3 zzz 50  %%


与你题目的要求不符~~

论坛徽章:
0
10 [报告]
发表于 2005-03-29 15:06 |只看该作者

如何按域来sort -u或uniq -u ?

原帖由 "li2002" 发表:



你这样的结果是
robot 3 xxx 10 @@
blue 9 yyy 30  ##
cindy 3 zzz 50  %%


与你题目的要求不符~~


忘了说明一下了

sort -u +5 -6 就是第5个域以后 第六个域结尾的域

假如是根据第三个域来sort 就是 sort -u +2 -3
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP