【发布时间】:2017-03-01 20:06:48
【问题描述】:
嗨,基本上我有一个我正在使用的“临时”文本文件,其中包含一长串各种电子邮件地址(有些重复)。我要输出的是按频率最高的电子邮件地址,最后是唯一电子邮件地址的总数。
awk '{printf "%s %s\n", $2, $1} END {print "total "NR}' temp | sort -n | uniq -c -i
到目前为止,我得到了我想要的输出除了,因为它没有按照最高频率排序。相反,它是按字母顺序排列的。
我已经坚持了几个小时了,不知道为什么。我知道我可能做错了什么,但我不确定。如果您需要更多信息并且我提供的代码不是问题,请告诉我。提前谢谢你。
编辑:我也尝试过排序 -nk1(输出在第一列中有频率)甚至 -nk2
edit2:这是我的“临时”文件的示例
aol.com
netscape.net
yahoo.com
yahoo.com
adelphia.net
twcny.rr.com
charter.net
yahoo.com
编辑 3:
预期输出:
33 aol.com
24 netscape.net
18 yahoo.com
5 adelphia.net
4 twcny.rr.com
3 charter.net
total 6
(无重复电子邮件,共有 6 个唯一电子邮件地址)
【问题讨论】:
-
向我们展示来自文件
temp的简短但有代表性的样本。 -
@Daniel 为了清晰起见,最好添加预期的输出
-
您的预期输出既不符合您的样本输入,也不符合您正在寻找的解决方案的既定意图(最高频率优先)。
-
@Sundeep 这是一个很好的猜测,但我想指导 OP 提供一个MCVE (Minimal, Complete, and Verifiable Example)。另请注意,输出甚至不符合“输出是电子邮件地址按最高频率排序”的要求。
-
@Daniel:通常最好先开始您的问题解释您要解决的问题,然后尝试(不成功的)解决方案 - 这可能是也可能不是基本上在正确的轨道上。否则,您将成为XY problem 的受害者。
标签: awk