有如下的文件
298 | a | pgr0242 | 関数"memset"の 3番目の実引数"(64) * 12"は、sizeof/strlenを使用して求めましょう。 |
301 | a | pgr0242 | 関数"memset"の 3番目の実引数"(256)"は、sizeof/strlenを使用して求めましょう。 |
469 | a | pgr0243 | 関数"memcpy"の 3番目の実引数 "vbcpsDelimiterAddr->sPtInfo[FIELD_EXAMID].ucLen"は、sizeof/strlenを 使用して求めているか調べましょう。 |
109 | b | pgr0247 | キャスト式"(UC)E_BCORD"は小さい型にキャストしています。 (キャスト型 : unsigned char, 式 : enum ) |
… | … | … | … |
其中第三列为bug的类型。
现需要将所有的类型提取出来,并去掉重复。
最简单的方法将其拷贝到Excel中,并利用排序机能,然后一个一个的数。
这种方法虽然可行,但是如果行比较多的话,可能需要数一阵子了。
再有,该方法不能自动化,也就是说,随便增删一行,你就要重复劳动。
我们的目标是尽可能自动化,希望让计算机帮我做这种重复的容易出错的活动。
第一步的尝试如下:
1, awk -F, '{print $3}' bc_tsk.csv
使用awk工具,将第三列打印出来,由于该文件是csv文件,所以分隔符设置为[,]。
经过该步骤,我们已经把所有bug类型提取出来了。虽然已经提取出了所有的bug类型,我们还需要对其进行排序,以便查找。
第二步的尝试如下:
2, awk -F, '{print $3}' bc_tsk.csv | sort
经过该步骤之后,所有的类型已经排序完毕,现在我们需要去掉重复的项目。
第三步的尝试如下:
3, awk -F, '{print $3}' bc_tsk.csv | sort -u
Ok,成功的完成了任务。
后来,需求又变了,需要将整个项目的所有bug类型进行统计。这需要对所有文件的bug类型进行统计。
第四步的尝试如下:
4, awk -F, '{print $3}' bc_tsk.csv com_def.csv | sort -u
无奈,文件实在太多了,有2,3十个之多,一个一个的写出来,也挺费劲,而且如果有文件的增加或删除,。。。
第五步的尝试如下,列出所有需要统计的文件
5, ls
第六步的尝试如下,将列出的所有文件作为awk的参数进行统计。
6, ls | xargs awk -F, '{print $3}' | sort -u
大功告成,美中不足的是输出的信息太多,好几屏,将其输出到文件中似乎是个不错的注意。
第七步的尝试如下:
7, ls | xargs awk -F, '{print $3}' | sort -u > result.txt
Ok,已经完美的完成了任务。整个过程用了10多分钟。真是一劳永逸阿。
顺便计算出了所有bug类型的个数。
第八步的尝试如下:
8, ls | xargs awk -F, '{print $3}' | sort -u | awk '{sum = sum + 1} END {print sum}'
完成了任务。赫赫