0

我需要一些关于家庭作业问题的帮助。我在需要解析的文件中有以下数据:

              Output-------------------------- Input---------------- Random----
              -Per Char- --Block--- -Rewrite-- -Per Char- --Block--- --Seeks---
Machine    MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec  %CPU /sec  %CPU
         50.0 36112 34.1 138026  1.9 179048  7.0 51361 51.1 312242  4.3 15211.4 10.3

我需要的是一种从输出和输入列的 Block 列中提取数据的方法。例如:

Output Block:
K/sec: 138026
%CPU:  1.9

Input Block:
K/sec: 312242
%CPU:  4.3

我仅限于使用 sed、awk、cut 和 grep。

4

2 回答 2

0

parse_data.txt:- 是数据所在的文件。

更多 parse_data.txt | grep -v "-" | sed 's/\ /\ /g' | awk '{打印 $4""$5""$10""$11}'

检索到关于输出和输入块的 CPU 和 k/sec 数据,如下所示,

得到的输出是:

 K/sec  %CPU K/sec  %CPU
 138026 1.9  312242 4.3

希望这能解决你的问题!!!!!!!

于 2012-11-29T05:48:51.963 回答
0

由于奇怪的标题只有数据行有 13 个字段,所以你可以只使用 awk 单行:

awk '{if (NF==13) printf "Output Block:\nK/sec: %s\n%CPU:  %s\n\nInput Block:\nK/sec: %s\n%CPU:  %s\n",$4, $5, $10, $11 }' inputfilename

如果你想在一个 shell 中解析多行

while read LINE || [ "$LINE" ]; do ... done < inputfile

拆分一个字符串,你可以使用 read 再次像

read dummyvar dummyvar2 dummy3 outputkb ... <<< $mystring
于 2012-11-29T06:39:21.017 回答