如何在制表符分隔文件中输出唯一条目列表

时间:2014-01-22 08:35:58

标签: linux

我有一个文件

1 ABC 123 345 Apples

1 ABC 345 345 Apples

1 ABC 123 345 Apples_Fuji

1 ABC 123 345 ApplesApplesApples

1 ABC 123 345 Pears

1 ABC 123 345 Banana
...

我希望得到一个输出文件

Apples 2

Apples_Fuji 1

ApplesApplesApples 1

Pears 1

Banana 1
...

我不确定是否一次一个地使用它们(-o会不准确,-c奇怪地每次给我一个值)。

4 个答案:

答案 0 :(得分:1)

带剪切,排序,uniq的解决方案

cat test | cut -f5,5 | sort | uniq -c

答案 1 :(得分:0)

尝试awk

$ awk '{arr[$NF]++}END{for(i in arr) print i,arr[i]}' file
ApplesApplesApples 1
Apples 2
Banana 1
Apples_Fuji 1
Pears 1

这是另一种方法,使用grepuniq

$ grep -oE '[^ ]+$' file | sort | uniq -c
      2 Apples
      1 Apples_Fuji
      1 ApplesApplesApples
      1 Pears
      1 Banana

答案 2 :(得分:0)

使用awk / sort / uniq的一个解决方案可能是:

cat file|awk '{print $5}'|sort|uniq -c

答案 3 :(得分:0)

Perl:

perl -lane '$h{$F[4]}++ unless(/^\s*$/);END{print "$_ $h{$_}" for(keys %h)}' your_file

下面测试:

> cat temp
1 ABC 123 345 Apples

1 ABC 345 345 Apples

1 ABC 123 345 Apples_Fuji

1 ABC 123 345 ApplesApplesApples

1 ABC 123 345 Pears

1 ABC 123 345 Banana
> perl -lane '$h{$F[4]}++ unless(/^\s*$/);END{print "$_ $h{$_}" for(keys %h)}' temp
Pears 1
ApplesApplesApples 1
Banana 1
Apples 2
Apples_Fuji 1
>