将简单的 ascii table 转换为 CSV

Convert simple ascii table to CSV

我有如下所示的 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

一个简单的方法是将您的输出导入到 Microsoft Excel。首先,将上述文件另存为"data.txt"。打开 Microsoft Excel,选择文件 -> 打开,然后选择 select "data.txt" 作为文件。您将看到一个如下所示的对话框:

立即选择完成。我用上面的数据对此进行了测试,使用 "Fixed width" 分隔符效果很好。

您现在应该会看到一个 Excel 工作簿,其中的数据整齐地排列在列中。最后一步是以 CSV 格式保存此文件。选择 "Save As" 或按 ALT + F + A,然后从扩展名列表中选择 CSV 格式,然后另存为 "data.csv"。您可以通过在编辑器中打开 "data.csv" 并检查来验证一切是否正常。

请注意,您可能需要在 Excel 中对您的列 headers 进行一些整理,但除此之外,您的转换应该是 breeze 使用 Excel!

我没有使用过 gprof 但假设它输出类似于上面示例的内容,您可以将输出通过管道传输到 awk:

gprof | awk -v OFS=',' '{print ,,,,,,}'

如果您在传递 gprof 的输出时遇到困难,您可以将输出(如示例)保存到文件中,例如 file.txt 并执行:

cat file.txt | awk -v OFS=',' '{print ,,,,,,}'