我有一个这样的文件:
[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文件,用于计算每个日期时间的出现次数。
e.g。
[10/May/2012:00:00:03 +0000], 4
[10/May/2012:00:00:06 +0000], 2
...
是否可以使用sed或grep或两者执行此操作?
答案 0 :(得分:3)
试试这个:
sort inputFile | uniq -c | awk '{print $2", "$1}'
或
sort inputFile | uniq -c | sed 's;^\s*\([0-9]*\)\s*\(.*\)$;\2, \1;'
答案 1 :(得分:2)
我不知道sed,因为你没有sed中的哈希表,但你可以使用perl one liner ...
perl -e 'while (<>) {chomp; $a{$_}++}; for $k (keys %a) { print "$k $a{$k}\n"; }' file.txt
答案 2 :(得分:0)
这是awk处理好的工作。这一切都可以在一行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