在bash上反转uniq命令

时间:2016-10-21 02:03:10

标签: bash unix awk sed grep

我试图查找特定电子邮件ID重复的次数。使用uniq -c输出管道420 aol.com,但我需要aol.com 420如何执行此操作,因为uniq -c适用作前缀计数

2 个答案:

答案 0 :(得分:2)

您可以将输出传递给awk

string='420 aol.com'
echo "$string" | awk '{print $2,$1}'

aol.com 420

默认情况下,awk用空格分隔每个字段。

  • 420是第一个字段$1

  • aol.com是第二个字段$2

这只是告诉awk以相反的顺序打印这些字段。 {print $2,$1}

答案 1 :(得分:0)

如果您有电子邮件地址列表,例如:

$ cat emails.txt
1@aol.com
2@yahoo.com
3@aol.com

你需要使用awk:

来计算他们的域名
$ awk -F@ '{a[$2]++} END {for(i in a) print i, a[i]}' emails.txt
aol.com 2
yahoo.com 1

记录没有特别的顺序输出。如果使用Gnu awk,则可以在PROCINFO["sorted_in"]="@val_num_asc";块的开头使用BEGIN(请参阅here选项)订购记录。