我需要一些家庭作业问题的帮助。我在一个需要解析的文件中有以下数据:
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。
parse_data.txt:-是存在数据的文件。
more parse_data.txt |grep-v"-"|sed的/\/\/g'|awk'{print$4"$5"$10"$11}'
关于输出和输入块的CPU和k/sec数据已检索,如下所示,
得到的输出为:
K/sec %CPU K/sec %CPU
138026 1.9 312242 4.3
希望这能解决你的问题!!!!!
由于标题很奇怪,只有数据行有13个字段,所以您可以使用awk一行:
awk '{if (NF==13) printf "Output Block:nK/sec: %sn%CPU: %snnInput Block:nK/sec: %sn%CPU: %sn",$4, $5, $10, $11 }' inputfilename
如果你想解析shell 中的多行
while read LINE || [ "$LINE" ]; do ... done < inputfile
要拆分字符串,可以像一样再次使用read
read dummyvar dummyvar2 dummy3 outputkb ... <<< $mystring