0이 아닌 요소가 1보다 작은 행을 삭제하는 방법

0이 아닌 요소가 1보다 작은 행을 삭제하는 방법

행을 삭제하고 싶습니다.0이 아닌 모든 요소1보다 작다

내 파일은

a   2   0   0   0   9
b   3   0   0   0.7 13
c   0.3 0.5 0   0   0
d   0.4 7.96681779026634e-05    0       0     

예상되는 출력은

a   2   0   0   0   9
b   3   0   0   0.7 13

나는 초보자입니다. awk '{for(i=2;i<=NF;i++){if($i+0=0 print $0; else < 1) next}} 1'다음과 같이 이전 코드를 편집하여 시도했습니다 .이 링크, 그런데 제가 뭔가 잘못하고 있어요.

답변1

노력하다:

$ awk '{f=0; for(i=2;i<=NF;i++) if($i+0!=0 && $i+0>=1)f=1} f' file
a  2   0   0   0   9
b   3   0   0   0.7 13

코드는 변수를 사용합니다 f. true(0이 아님)로 끝나면 f행을 인쇄합니다.

  • f=0

    각 행에 대해 ffalse로 설정하여 시작합니다(인쇄하지 않음).

  • for(i=2;i<=NF;i++) if($i+0!=0 && $i+0>=1)f=1

    요소가 0이 아니고 1보다 큰 경우 (true) f로 설정됩니다.1

  • f

    ftrue(0이 아님) 이면 이 행을 인쇄합니다.

관련 정보