我有如下所示的gprof输出,我想将其转换为CSV格式。从cmd行做最简单的方法是什么? (我有很多这类文件,我需要自动化。)
% cumulative self self total
time seconds seconds calls s/call s/call name
30.02 2.75 2.75 334408 0.00 0.00 primal_bea_mpp
23.25 4.88 2.13 5 0.43 0.89 price_out_impl
22.93 6.98 2.10 6336742 0.00 0.00 replace_weaker_arc
8.84 7.79 0.81 1679 0.00 0.00 refresh_potential
4.04 8.16 0.37 334402 0.00 0.00 sort_basket
3.00 8.44 0.28 334402 0.00 0.00 update_tree
2.07 8.62 0.19 233720751 0.00 0.00 bea_is_dual_infeasible
2.07 8.81 0.19 8630892 0.00 0.00 insert_new_arc
2.02 9.00 0.18 334402 0.00 0.00 primal_iminus
0.55 9.05 0.05 6 0.01 0.01 flow_cost
0.55 9.10 0.05 4 0.01 0.02 suspend_impl
0.33 9.13 0.03 6 0.01 0.01 dual_feasible
0.22 9.15 0.02 7 0.00 0.00 refresh_neighbour_lists
0.11 9.16 0.01 6 0.00 0.77 primal_net_simplex
0.00 9.16 0.00 6 0.00 0.00 primal_feasible
0.00 9.16 0.00 2 0.00 0.00 resize_prob
0.00 9.16 0.00 1 0.00 0.00 getfree
0.00 9.16 0.00 1 0.00 9.16 global_opt
0.00 9.16 0.00 1 0.00 0.00 primal_start_artificial
0.00 9.16 0.00 1 0.00 0.00 read_min
0.00 9.16 0.00 1 0.00 0.00 write_circulations
答案 0 :(得分:2)
我没有使用gprof,但假设它输出的内容类似于上面的示例,您可以将输出传递给awk
:
gprof | awk -v OFS=',' '{print $1,$2,$3,$4,$5,$6,$7}'
如果管道gprof的输出有困难,您可以将输出(如示例)保存到文件中,例如file.txt
并执行:
cat file.txt | awk -v OFS=',' '{print $1,$2,$3,$4,$5,$6,$7}'
答案 1 :(得分:1)
执行此操作的一种简单方法是将输出导入到Microsoft Excel中。首先,将上述文件另存为“data.txt”。打开Microsoft Excel,选择文件 - >打开,然后选择“data.txt”作为文件。您将看到一个如下所示的对话框:
立即选择完成。我用上面的数据对此进行了测试,使用“固定宽度”的分隔符效果很好。
您现在应该看到一个Excel工作簿,其中的数据整齐地列在列中。最后一步是以CSV格式保存此文件。选择“另存为”或按ALT + F + A,然后从扩展名列表中选择CSV格式,然后另存为“data.csv”。您可以通过在编辑器中打开“data.csv”并检查来验证一切是否有效。
请注意,您可能需要使用列标题在Excel中进行一些整理,但除了使用Excel进行转换之外,应该轻而易举!