Awk 打印uniq输出的第一行

Awk 打印uniq输出的第一行,awk,uniq,Awk,Uniq,我想根据第一个字段显示uniq行,并在该行第一次出现时输出oly >cat testing.txt aaa bbb aaa ccc xxx yyy zzz ppp uuu vvv uuu ttt 当我这样做时: aaa bbb xxx yyy zzz ppp uuu vvv 这不是我想要的。如果您不介意的话 >uniq testing I get: aaa bbb aaa ccc xxx yyy zzz ppp uuu vvv uuu ttt 或者,您可以使用Ruby(1.9+

我想根据第一个字段显示uniq行,并在该行第一次出现时输出oly

>cat testing.txt
aaa bbb
aaa ccc
xxx yyy
zzz ppp
uuu vvv
uuu ttt
当我这样做时:

aaa bbb
xxx yyy
zzz ppp
uuu vvv

这不是我想要的。

如果您不介意的话

>uniq testing
I get:
aaa bbb
aaa ccc
xxx yyy
zzz ppp
uuu vvv
uuu ttt
或者,您可以使用Ruby(1.9+)


如果你不介意的话

>uniq testing
I get:
aaa bbb
aaa ccc
xxx yyy
zzz ppp
uuu vvv
uuu ttt
或者,您可以使用Ruby(1.9+)


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

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

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


cat testing.txt | sort | uniq-w3

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

cat testing.txt | sort | uniq-w3

另一个awk解决方案:

$ 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
Perl:

另一个awk解决方案:

$ 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
Perl:


谢谢awk一号班轮做得很好!谢谢awk一号班轮做得很好!如果OP的样本数据和样本输出具有代表性,这显然是最佳答案。如果OP的样本数据和样本输出具有代表性,这显然是最佳答案。
perl -ane'
  print unless $_{$F[0]}++
  ' infile