if와 for를 결합하는 Awk 명령

if와 for를 결합하는 Awk 명령

20개의 열이 있는 csv 파일이 있습니다. 파일의 첫 번째 부분은 지리적 위치 정보입니다. 제가 하고 싶은 것은 특정 기록에 대한 지리 위치 데이터를 찾는 것입니다. 먼저, 사용자 "ROSA"가 식별되는지 여부. 행의 처음 10개 열을 검색하고 그 중 "GeoLocation"이 포함된 열이 있으면 전체 행 대신 다음 레코드만 인쇄합니다.

awk  -F"," '($0~/ROSA/) {for(i=1;i<=10;i++) {($i~/GeoLocation/) print $(i+1)}}' filename.csv

위 줄을 알아냈지만 인쇄물의 "p"에 구문 오류가 표시되었습니다.

내가 무엇을 놓치고 있는지 알아낼 수 있나요?

답변1

이 시도: awk -F"," '($0~/ROSA/) {for(i=1;i<=10;i++) {if ($i~/GeoLocation/) print $(i+1)}}' filename.csv.
또한 "You Know field number"의 ROSA에 대해 전체 줄을 검색하지 않거나 최소한 정규식에 구분 기호를 포함하여 하위 문자열과 일치하지 않게 합니다.
또한 다음 레코드(다음 줄 전체가 됨)를 인쇄하고 싶지 않지만 다음 필드는...

답변2

부터 시작해 보세요

awk  -F"," '($0~/ROSA/) {for(i=1;i<=10;i++) {($i~/GeoLocation/) print $(i+1)}}' filename.csv

도착하다

awk  -F"," '($0~/ROSA/) {for(i=1;i<=10;i++) {if($i~/GeoLocation/) {print $(i+1)}}}' filename.csv

관련 정보