1

時限実行可能ファイルの結果を、10回実行されたファイルに出力しています。私はすべての時間をファイルに入れており、このファイルから最高、最悪、および平均のユーザー時間を見つける必要があります。awkを組み合わせて最初の列を印刷することを考えていましたが、数値で並べ替えるために、行から「ユーザー」を削除する方法がわかりません。

また、入力と出力、およびこれらの計算に関係のないことに関する情報が含まれているため、偶数行を削除する必要があります。タイムファイルのサンプルを以下に示します。

1.12user 0.00system 0:01.12elapsed 99%CPU (0avgtext+0avgdata 5408maxresident)k
0inputs+0outputs (0major+398minor)pagefaults 0swaps

誰かが私がこれをどのように行うかについて何か考えがありますか?

どんな助けでもいただければ幸いです!ありがとうございました。

4

3 に答える 3

1
tr -s ' '  '[:alpha:]' < inputfile | awk '{print $1, $2, $3} ' > newfile

同じことをする他のバリエーションがあります。

于 2013-02-16T23:46:02.897 に答える
1

これで大丈夫ですか?

awk -F'user' 'NR%2{print $1}' file 

例を挙げて:

kent$  cat file
1.11user 0.00system 0:01.12elapsed 99%CPU (0avgtext+0avgdata 5408maxresident)k
0inputs+0outputs (0major+398minor)pagefaults 0swaps
1.10user 1.00system 0:01.12elapsed 99%CPU (0avgtext+0avgdata 5408maxresident)k
0inputs+0outputs (0major+398minor)pagefaults 0swaps
1.12user 2.00system 0:01.12elapsed 99%CPU (0avgtext+0avgdata 5408maxresident)k
0inputs+0outputs (0major+398minor)pagefaults 0swaps
1.13user 3.00system 0:01.12elapsed 99%CPU (0avgtext+0avgdata 5408maxresident)k
0inputs+0outputs (0major+398minor)pagefaults 0swaps

kent$  awk -F'user' 'NR%2{print $1}' file
1.11
1.10
1.12
1.13

これでも多分?

 awk -F'user' 'NR%2{a[++i]=$1;s+=$1}END{asort(a);print "best: "a[1];print "worst: "a[length(a)];print "avg: "s/length(a)}' file   

上記の例では、次のように出力されます。

best: 1.10
worst: 1.13
avg: 1.115
于 2013-02-16T23:52:54.107 に答える
1

最初の番号#userだけに関心がある場合。

cat txt | paste - - | cut -d' ' -f1  | tr -d "[:alpha:]" | sort -n

与える:

1.12
1.13
1.14
1.15
1.16

並べ替えを証明するために番号が変更されたtxtの私の例では。

于 2013-02-16T23:54:16.403 に答える