2つの列を分離するが互いに分離しない

2つの列を分離するが互いに分離しない

各ユーザーが使用するCPU時間を取得するスクリプトで生成されたCSVファイルがありますが、このファイルは数秒以内にインポートされ、数時間以内に必要なため、各行を3600で分割する必要があります。

入力ファイルの例

**USER,TOTAL_CPU,AVERAGE_CPU
user1,1234552.0,1234.3
user2,9999999.0,82772.6
user3,7777776227.9,282882,0**

一度に1列ずつ実行すると、必要なものを簡単に取得できます。

for i in `awk -F , 'NR!=1{print $2}' myfile.out`; do bc -l <<< "scale=3; ($i/3600)"; done

今回は1つの出力列が提供されます。私は両方とも望み、1つの列を作成し、次の列を作成してから2つをマージするよりも良い方法が必要です。私は同時に2つのことをしたいです。出力は入力と同じでなければなりませんが、数秒ではなく数時間かかります。

サンプル出力ファイル:

USER,TOTAL_CPU,AVERAGE_CPU
user1,342.931,0.342
user2,2777.777,22.992
etc.....

答え1

Awk解決策:

awk 'BEGIN{ FS=OFS="," }
     NR > 1{
         $2 = sprintf("%.3f", $2/3600);
         $3 = sprintf("%.3f", $3/3600)
     }1' file

出力:

USER,TOTAL_CPU,AVERAGE_CPU
user1,342.931,0.343
user2,2777.778,22.992
user3,2160493.397,78.578,0

関連情報