2012-11-29 4 views
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 

: 내가 분석 할 필요가 파일에 다음과 같은 데이터가 있습니다. 예 :

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

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

나는 sed, awk, cut 및 grep을 사용하는 것으로 제한됩니다.

+4

처럼 다시 읽을 사용할 수있는 문자열을 분할하는? –

+4

소리가 재미 있지만 무엇을 시도 했습니까? – Faiz

+0

나는 grep을 시도했지만 그게 나에게 줄을 줄 뿐이다. 난 칼럼을 얻을 방법을 찾고 있어요. 그래서 나는 같은 것을 시도했습니다 grep -e "--Block ---" – Liver

답변

0

parse_data.txt : - 데이터가있는 파일입니다.

more parse_data.txt | grep -v "-"| sed 's/\/\/g'|

출력있어 AWK, 아래와 같이 검색된된다 대하여 출력과 입력 블록 와

CPU 및 K/초의 데이터 '{$ 4 ""$ 5 ""$ 10 ""$ 11 인쇄}이다 :

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

희망 사항이 문제를 해결합니다 !!!!!

+0

"sed"명령을 사용하지 않아도 괜찮습니다. :) –

+0

그래서 실제로 awk!/-/{print $ 4 ""$ 5 ""$ 10 ""$ 11} 'parse_data.txt'. 특히 쓸데없는 사용은 ... 대담합니다. – tripleee

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 

와 당신은 쉘에서 여러 줄을 구문 분석 할 경우

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

당신이 지금까지 가지고 무엇

read dummyvar dummyvar2 dummy3 outputkb ... <<< $mystring 
관련 문제