【发布时间】:2012-04-10 06:27:13
【问题描述】:
我正在尝试读取文件并按特定字段的出现次数对其进行排序。假设我想从日志文件中找出重复次数最多的日期,然后我使用 uniq -c 选项并按降序对其进行排序。像这样的
uniq -c | sort -nr
这将产生一些像这样的输出 -
809 23/Dec/2008:19:20
实际上是计数的第一个字段对我来说是个问题....我想从上面的输出中得到一个日期,但我无法得到这个。我尝试使用 cut 命令并做到了这一点
uniq -c | sort -nr | cut -d' ' -f2
但这只是打印空白......请有人可以帮助我只获取日期并取消计数。我只想要
23/Dec/2008:19:20
谢谢
【问题讨论】:
-
你确定你的输出是这样的吗?我试过
echo '809 23/Dec/2008:19:20' | cut -d' ' -f2,效果很好 -
根据正在使用的
uniq的实现,在重复计数809之前可能有零个或多个空格。如果没有前导空格,原始表达式可以正常工作。因为uniq -c的某些实现确实会产生前导空格,所以会遇到问题。 -
乔纳森..这是一个完美的猜测....我看到计数之前有一个空格。
-
不管输入:先排序然后uniq
-
可以显示输入数据吗?