awk를 사용하여 플랫 파일에서 잘못된 레코드 추출

awk를 사용하여 플랫 파일에서 잘못된 레코드 추출

지정된 열보다 많은 열을 포함하는 파일에서 행을 추출하는 스크립트가 필요합니까 awk?

답변1

$ awk 'NF > 10 { print NR }' data.in

그러면 줄 번호가 인쇄됩니다(실제로는기록그러나 기본적으로 행은 하나의 레코드이므로 차이가 없습니다.) 각 행에는 10개 이상의 필드가 포함됩니다. 기본적으로 필드는 공백으로 구분된 문자열입니다. 다른 구분 기호가 있는 경우 -F( -F ','쉼표 대신)을 사용합니다.

$ awk -F ',' 'NF > 10 { print NR }' data.in

줄 번호 대신 줄을 보려면 더 간단합니다.

$ awk 'NF > 10' data.in

답변2

질문이 "최대" 열 수보다 많은 파일에서 줄을 인쇄하는 방법인 경우 다음 방법 중 하나를 따르세요.

awk -v max=9 'NF > max' your-file-here

지정하려는 최대값(여기서는 9)을 전달합니다.

답변3

추출이 삭제를 의미하는 경우 사용할 수 있습니다.awk

$ awk 'NF < 10' my-file.in > my-file.out

무너지다

NF현재 처리 중인 행에 필드 수를 표시하는 awk 변수입니다.

< 10NF가 10보다 작으면 라인을 인쇄합니다.

my-file.in입력 파일.

> my-file.out출력을 새 파일로 리디렉션합니다.

awk에 대해 더 자세히 알고 싶다면 awk가 내장되어 있으며 내장 awk 변수의 레이아웃이 매우 훌륭하다고 생각합니다.여기.

관련 정보