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

你可以吗?

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 回答
1
tr -s ' '  '[:alpha:]' < inputfile | awk '{print $1, $2, $3} ' > newfile

还有其他变体可以做同样的事情。

于 2013-02-16T23:46:02.897 回答