shell问答15:如何按域(field)来消除重复行

发表于:2007-07-04来源:作者:点击数: 标签:
去除某个Field有重复的行 例如: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 ## 按

去除某个Field有重复的行

例如:$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  %%

答案:
1.sort -k3,3 txt6|awk '}'
2.uniq -f2 -W1 file
注。linux的uniq工具没有W。uniq -f是跳过多少个域进行比较,-s是跳过多少个字符,-W是最多对多少个域进行比较,-w是最多对多少个字符进行比较
3.sort -u +2 -3 就是第2个域以后 第3个域结尾的域

原文转自:http://www.ltesting.net