1

我有一个这样的文件:

[10/May/2012:00:00:03 +0000]
[10/May/2012:00:00:03 +0000]
[10/May/2012:00:00:03 +0000]
[10/May/2012:00:00:03 +0000]
[10/May/2012:00:00:06 +0000]
[10/May/2012:00:00:06 +0000]
...

我希望生成一个 CSV 文件来计算每个日期时间的出现次数。

例如

[10/May/2012:00:00:03 +0000], 4
[10/May/2012:00:00:06 +0000], 2
...

是否可以使用 sed 或 grep 或两者兼而有之?

4

3 回答 3

3

试试这个:

 sort inputFile | uniq -c | awk '{print $2", "$1}'

或者

 sort inputFile | uniq -c | sed 's;^\s*\([0-9]*\)\s*\(.*\)$;\2, \1;'
于 2012-05-11T13:14:26.040 回答
2

我不了解 sed,因为您在 sed 中没有哈希表,但是您可以使用 perl one liner 来完成...

perl -e 'while (<>) {chomp; $a{$_}++}; for $k (keys %a) { print "$k $a{$k}\n"; }' file.txt
于 2012-05-11T13:17:06.790 回答
0

这就是 awk 处理好的工作。这一切都可以在 1 行 awk 中完成,如下所示:

awk '{ts[$0]++;} END{for (var in ts) print var",", ts[var];}' file.txt

输出:

[10/May/2012:00:00:03 +0000], 4
[10/May/2012:00:00:06 +0000], 2
于 2012-05-11T14:12:21.993 回答