0
>cat testing.txt
aaa bbb
aaa ccc
xxx yyy
zzz ppp
uuu vvv
uuu ttt

我想根据第一个字段显示 uniq 行并仅输出第一次出现的行

aaa bbb
xxx yyy
zzz ppp
uuu vvv

当我做:

>uniq testing
I get:
aaa bbb
aaa ccc
xxx yyy
zzz ppp
uuu vvv
uuu ttt

这不是我想要的。

4

4 回答 4

3

另一个awk解决方案:

awk '!_[$1]++' infile

珀尔:

perl -ane'
  print unless $_{$F[0]}++
  ' infile
于 2011-04-04T10:20:19.733 回答
1

如果你不介意订单

$ awk '(!( $1 in arr) ){arr[$1]=$0}END{for(i in arr) print arr[i]}' file

或者,您可以使用 Ruby(1.9+)

$ ruby -ane 'BEGIN{h={}}; h[$F[0]]=$_ if not h.has_key?($F[0]) ; END{h.each{|x,y| puts "#{y}" }} ' file
aaa bbb
xxx yyy
zzz ppp
uuu vvv
于 2011-04-04T09:47:22.073 回答
1

确保在将输入传递给 uniq 之前对其进行排序

猫测试.txt | 排序 | 独特的-w3

于 2011-04-04T10:09:20.303 回答
0

uniq 支持使用 -w 标志仅检查 N 个字符。如果您的文件确实看起来像这样,您可以执行uniq -w 3.

于 2011-04-04T10:06:05.170 回答