我需要一些家庭作业问题的帮助。我在需要解析的文件中有以下数据:
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。
答案 0 :(得分:0)
parse_data.txt: - 数据存在的文件。
更多parse_data.txt | grep -v“ - ”| sed's / \ / \ / g'| awk'{print $ 4“”$ 5“”$ 10“”$ 11}“
关于输出和输入块的CPU和k / sec数据 已被检索,如下所示,
输出得到:
K/sec %CPU K/sec %CPU
138026 1.9 312242 4.3
希望这能解决你的问题!!!!!
答案 1 :(得分: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 dummyvar dummyvar2 dummy3 outputkb ... <<< $mystring