반응형
  • 리눅스 AWK 개념 (awk 필드와 레코드에 대해, linux awk)

awk는 텍스트 파일을 처리하는 라인 지향 프로그램 입니다. 아래 이미지와 같이 필드와 레코드로 구분하여 데이터를 처리하게 되는데, 구분자를 사용하여 표와 같은 모양이 됩니다.

  • 레코드 구분자 : 엔터(개행)
  • 필드 구분자 : 탭, 스페이스

 

첫번째 필드는 $1, 두번째 필드는 $2와 같이 표현되며 $0은 전체 필드를 가르킵니다. 아래와 같은 리스트가 있을 경우 -rw-r--r-- 은 $1 그 다음의 1로 표시된것(Link Count)은 $2가 됩니다.

 

띄어쓰기로 필드를 구분하여 표로 그려보면 아래와 같은 이미지처럼 됩니다.

 

필드의 구분자는 탭 또는 스페이스라고 했으므로 touch "spa ce"를 입력하여 파일명에 띄어쓰기를 주고나서 awk print를 사용하여 실제로 필드를 탭 또는 스페이스로 구분하는지 확인해볼 수 있습니다.

 

실제로 $10을 사용하여 10번째 필드값을 출력할 경우 다른 필드들은 10번째 필드가 없기 때문에 공백으로 출력되고 ce라는 필드만 출력하게 됩니다

 

  • 만약 스페이스 사이에 아무런 내용도 없이 여러번 사용하면 어떻게 될까요?

아래는 spa와 ce2 사이에 스페이스를 3번 주고나서 출력한 이미지 입니다.

 

awk는 탭이나 띄어쓰기가 여러번 입력되어 있더라도 그 사이에 문자가 없다면 1개의 필드로 처리 됩니다. 이러한 특성으로 인해 awk를 사용하여 데이터를 처리할때는 데이터의 내용에 일관성이 있어야 생각했던 결과와 다른 값이 나오는 현상을 방지할 수 있습니다.

 

반응형

+ Recent posts