2014-03-01 4 views
1

보다 커야합니다. 어떻게해야 할 지 문제가 있습니다. 쉼표로 구분 된 필드가있는 데이터 파일 순서대로 파이프 된 일부 스크립트의 출력을 가져와야합니다. 결국, 필자는 awk에게 7 번째 필드의 데이터를 가져와 31 이상의 값을 찾아서 출력해야합니다. 이것은 내가 지금까지 가지고있는 것입니다 :bash 쉘 필드는 #

원한다면 스크립트를 실행하고 #를 # 변경할 수 있도록이 글을 작성했습니다.

구문 분석 된 데이터 파일에서이 정보를 검색 한 후에는 입력 한 헤더 (간단한 echo 명령)를 출력하고 출력 20 줄의 빈 줄에 출력 할 빈 줄을 표시해야합니다 그 방법을 알지 못한다.) 그리고 출력의 마지막 줄에 처리 된 레코드 수를 출력한다. (간단한 wc -l).

$ 7 필드에서 31보다 큰 값을 파싱하려면 어떻게해야합니까? 다른 머리글을 인쇄하기 전에 20 줄마다 빈 줄을 사용하여 머리글을 어떻게 처리합니까?

echo Year  Make  Model Cylinders  Engine Displacement City Hwy 

및 상기 보고서. 그리고 출력이 20 개 이상 있다면. 새로운 헤더를 넣을 것입니다.

어떻게해야합니까?

+0

출력을 위해 빈 줄이있는 20 줄마다 헤더를 추가하는 방법은 어떻습니까? – user3030048

답변

1

당신은 아마 -gt 대신 -g합니다 : 필드가 쉼표로 구분하는 경우

if [ "$hwy" -gt "$selection" ]; then 
      ^
0

, 당신은 구분 기호로 쉼표를 사용하는 awk을 알려 주어야합니다.

당신은 awk와 루프에 서투른 echo 명령없이 모든 일을 할 수있는하십시오 오두막 라인 (#!/bin/sh 또는 이와 유사한 것)을 제외

selection=${1:-31} 
awk -F, -v selection=$selection '{ if ($7 > selection) print $7 }' 

, 즉 걸리는 전부입니다. ${1:-31} 표기는 shell parameter expansion의 예입니다.