使用grep或sed计算文件中字符串的出现次数?

时间:2012-05-11 13:08:14

标签: regex sed

我有一个这样的文件:

[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或两者执行此操作?

3 个答案:

答案 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