Shell脚本计数字符串出现次数

时间:2013-06-07 18:21:58

标签: linux shell unix

我正在研究一个项目,需要帮助找出如何完成任务。 我将获得一个日志文件,我需要解析并计算在某一分钟发生的事件的次数。

例如,如果我有一个txt文件:

Line 3: 0606 221241  successfully copied to **
Line 5: 0606 221242  successfully copied to **
Line 7: 0606 221242  successfully copied to **
Line 9: 0606 221342  successfully copied to **

我想知道在2212成功复制了多少次 到目前为止,我有以下代码仅分离已成功复制的行并将日期分开...

grep "successfully copied to" Text.log >> Success.txt
awk '{print ($1,  $2)}' Success.txt > datesAndTimes.txt

这给了我

0606 221241
0606 221242
0606 221242
0606 221243

出于某种原因,我无法确定如何计算每个特定时间(例如0606 2212)发生的次数。发生。 我只需要分钟,而不是秒(第二列的最后两位数字) 最终我想要一个log / txt文件,上面写着:

0606 2212 3
0606 2213 1

依旧......

如果有人有任何想法,我会有一点脑屁。 提前谢谢!

1 个答案:

答案 0 :(得分:2)

你可以用awk one liner获得这个:

awk '{mm=substr($4, 1, 4); cnt[$3 " " mm]++} END{for(a in cnt) print a " " cnt[a]}' Text.log

现场演示:http://ideone.com/w2h64d