我只是写了我写过的最歪曲的命令,我想知道如何做得更好。
我这样写:
grep -E '00[7-9]\.|0[1-9][0-9]\.' filename.log | awk '{print $6}' | sed 's/\(.*\):.*/\1/' | sort | uniq -c | sort -rn
输入示例:
2011/06/30 07:59:43:81 20626 code_file.c (252): FunctionName: 009.63 seconds
基本上,它正在执行的操作是通过一个日志文件,该文件列出了执行命令所花费的秒数,并捕获了执行时间在7到99秒之间的任何命令。然后,awk打印第六个单词,它是函数名称,后跟一个冒号。然后sed删除冒号和任何结尾的空格,然后对其进行排序,计数,然后根据其计数进行排序。
我使用的是HP-UX,因此我的某些工具受到限制,但是我知道awk可以完成sed的工作。有人可以帮助我简化我的命令吗?
输入行示例将很有帮助。
—
grawity 2011年
您提到您的工具有限,可以详细说明吗?例如,由于Gravity的答案是perl,您有perl吗?
—
bbaja42 2011年
我有perl。我只是在说HP-UX工具的功能通常少于GNU计数器的功能。例如,HP-UX的grep缺少-rab和许多更重要的选项,也没有uniq的-w等
—
Malfist