awk 코드 설명

awk 코드 설명

명령줄 기록이 포함된 History.txt 파일에서 중복 항목을 제거하는 코드입니다.

BEGIN{
      if (data[$0]++ == 0)
         lines[++count] = $0;
     }
END {
     for(i=1; i<count; i++)
         print lines[i];
    }

data코드에는 무엇이 있으며 왜 와 비교됩니까 0?

답변1

이는 입력의 고유한 라인을 기억하기 위한 것입니다.

Jeff Schaller가 지적했듯이 $0블록에 정의되어 있지 않습니다.BEGIN

더 정확한 코드는

{
      if (data[$0]++ == 0)
         lines[++count] = $0;
     }
END {
     for(i=1; i<count; i++)
         print lines[i];
    }

심지어

!data[$0]++ { lines[++count] = $0; }
END {
     for(i=1; i<count; i++)
         print lines[i];
    }

행의 첫 번째 발생은 data[$0]0과 같으며 line[ ]해당 행이 수신됩니다.

테스트 후에는 data[$0]증가하고( ++예 사후 증가) 동일한 내용을 가진 행에 대해 테스트는 false로 평가됩니다.

END문은 모든 줄을 순서대로 인쇄합니다.

당신은 또한 볼 수 있습니다awk '!a[$0]++'는 어떻게 작동하나요?

관련 정보