> 텍스트 처리 및 검색 > awk-print

awk print: 텍스트 데이터 출력

`awk` 명령어 내에서 데이터를 출력하는 `print` 문에 대한 가이드입니다. `print`는 `awk` 스크립트의 핵심 기능 중 하나로, 파일이나 스트림에서 처리된 텍스트를 표준 출력으로 내보내는 데 사용됩니다. 특정 필드, 전체 라인, 또는 사용자 정의 문자열을 유연하게 출력할 수 있습니다.

개요

`awk`의 `print` 문은 입력 레코드(라인)에서 추출한 데이터를 표준 출력으로 내보내는 데 사용됩니다. 필드(컬럼) 단위로 데이터를 선택하거나, 여러 필드를 조합하여 출력하고, 조건에 따라 출력을 제어할 수 있습니다. `print`는 `awk` 스크립트의 가장 기본적인 액션 중 하나입니다.

주요 특징

`awk print`의 핵심 기능은 다음과 같습니다.

  • 전체 라인 또는 특정 필드 출력
  • 내장 변수(NR, NF, FS, RS 등) 활용
  • 문자열과 필드 조합 출력
  • 조건부 출력 지원
  • 기본적으로 각 출력 후 줄바꿈 추가

사용 예시

`awk`의 `print` 문을 활용한 다양한 예시입니다. 예시 파일 `data.txt`는 다음과 같다고 가정합니다: `apple 10 red banana 20 yellow orange 15 orange`

전체 라인 출력

awk '{print}' data.txt

입력 파일의 모든 라인을 그대로 출력합니다.

첫 번째 필드 출력

awk '{print $1}' data.txt

각 라인의 첫 번째 필드($1)만 출력합니다.

여러 필드와 문자열 조합 출력

awk '{print "Item:", $1, "Color:", $3}' data.txt

첫 번째 필드와 세 번째 필드를 쉼표로 구분하여 출력하고, 사용자 정의 문자열을 추가합니다.

특정 조건 만족 시 출력

awk '$2 > 15 {print}' data.txt

두 번째 필드($2) 값이 15보다 큰 라인만 전체 출력합니다.

마지막 필드 출력

awk '{print $NF}' data.txt

각 라인의 마지막 필드($NF)만 출력합니다. NF는 현재 라인의 총 필드 수를 나타내는 내장 변수입니다.

필드 구분자 변경 후 출력

echo "fruit,100,red\nbanana,200,yellow" | awk -F',' '{print $1, $2}'

입력 필드 구분자(-F)를 쉼표(,)로 지정하고, 첫 번째 필드와 두 번째 필드를 출력합니다. (예시 파일: `fruit,100,red\nbanana,200,yellow`)

팁 & 주의사항

`awk print`를 더욱 효과적으로 사용하기 위한 팁과 주의할 점입니다.

성능 및 활용 팁

  • `print` 대신 `printf` 사용: `printf`는 C 언어의 `printf`와 유사하게 포맷팅을 정교하게 제어할 수 있습니다. `print`는 기본적으로 각 인자 사이에 OFS(출력 필드 구분자)를 넣고 OSR(출력 레코드 구분자, 기본 줄바꿈)을 추가하지만, `printf`는 사용자가 직접 포맷을 지정해야 합니다.
  • 필드 구분자(`-F`) 명확히 지정: 입력 파일의 필드 구분자가 공백이 아닌 경우 `-F` 옵션을 사용하여 정확한 필드 분리를 보장해야 합니다.
  • 복잡한 로직은 `awk` 스크립트 파일로 관리: 스크립트가 길어지면 `awk -f script.awk data.txt` 형태로 별도 파일로 관리하는 것이 가독성과 유지보수에 좋습니다.
  • 내장 변수 활용: `NR` (현재 레코드 번호), `NF` (현재 레코드의 필드 수), `FS` (입력 필드 구분자), `RS` (입력 레코드 구분자) 등 `awk`의 강력한 내장 변수들을 활용하면 더욱 유연한 처리가 가능합니다.

동일 카테고리 명령어