> 텍스트 처리 및 검색 > printf

printf: 형식 지정 출력

`printf`는 C 언어의 `printf` 함수와 유사하게, 지정된 형식 문자열에 따라 데이터를 표준 출력으로 출력하는 명령어입니다. 변수나 리터럴 값을 다양한 형식(정수, 부동 소수점, 문자열 등)으로 포맷하여 출력할 수 있으며, 이스케이프 시퀀스를 사용하여 특수 문자를 삽입할 수 있습니다. `echo` 명령어보다 더 정교한 출력 제어가 가능합니다.

개요

`printf`는 형식 문자열과 인수를 사용하여 출력을 정밀하게 제어합니다. 이는 스크립트에서 보고서 생성, 로그 메시지 포맷팅 등 다양한 용도로 활용됩니다.

주요 특징

  • 다양한 형식 지정자 지원 (%s, %d, %f 등)
  • 이스케이프 시퀀스 지원 (\n, \t, \x 등)
  • 정수, 부동 소수점, 문자열 등 데이터 타입별 출력
  • 출력 너비, 정밀도, 정렬 제어 가능

주요 옵션 (형식 지정자 및 이스케이프 시퀀스)

`printf` 명령어는 전통적인 `-`로 시작하는 옵션보다는 형식 문자열 내에 포함되는 '형식 지정자'와 '이스케이프 시퀀스'를 통해 동작을 제어합니다. 다음은 자주 사용되는 것들입니다.

형식 지정자

이스케이프 시퀀스

생성된 명령어:

명령어를 조합해 보세요.

설명:

`printf` 명령어를 실행합니다.

위 옵션들을 조합하여 AI와 함께 가상으로 명령어를 실행해 보세요.

사용 예시

다양한 형식 지정자와 이스케이프 시퀀스를 활용한 `printf` 사용 예시입니다.

기본 문자열 출력

printf "Hello, World!\n"

간단한 문자열을 출력하고 줄 바꿈합니다.

정수 및 문자열 혼합 출력

printf "이름: %s, 나이: %d세\n" "홍길동" 30

정수와 문자열을 함께 포맷하여 출력합니다.

부동 소수점 정밀도 지정

printf "원주율: %.2f\n" 3.141592

부동 소수점 숫자를 소수점 이하 두 자리까지 출력합니다.

출력 너비 및 정렬

printf "%-10s %5d\n" "상품명" 123

문자열을 10칸 너비로 왼쪽 정렬하고, 정수를 5칸 너비로 오른쪽 정렬합니다.

16진수 및 8진수 출력

printf "10진수: %d, 16진수: %x, 8진수: %o\n" 255 255 255

숫자를 16진수와 8진수로 출력합니다.

변수와 함께 사용

NAME="김철수"
SCORE=95
printf "학생: %s, 점수: %d점\n" "$NAME" "$SCORE"

셸 변수를 `printf`의 인수로 사용하여 출력합니다.

팁 & 주의사항

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

`echo`와의 차이점

`echo`는 주로 간단한 문자열 출력에 사용되며, 이스케이프 시퀀스 해석(`-e` 옵션 필요)이나 형식 지정에 제한적입니다. 반면 `printf`는 형식 지정자를 통해 출력 형식을 정밀하게 제어할 수 있으며, 이스케이프 시퀀스를 항상 해석합니다.

  • 이스케이프 시퀀스: `printf`는 항상 이스케이프 시퀀스를 해석합니다. `echo`는 `-e` 옵션이 필요합니다.
  • 형식 지정: `printf`는 `%s`, `%d` 등 다양한 형식 지정자를 지원하여 출력 형식을 세밀하게 제어할 수 있습니다. `echo`는 이러한 기능이 없습니다.
  • 줄 바꿈: `echo`는 기본적으로 출력 후 줄 바꿈을 하지만, `printf`는 `\n`을 명시적으로 지정해야 합니다.

형식 문자열과 인수의 일치

형식 문자열의 형식 지정자 수와 제공되는 인수의 수가 일치해야 합니다. 인수가 부족하면 셸에 따라 기본값(예: 0 또는 빈 문자열)이 사용될 수 있으며, 인수가 너무 많으면 초과된 인수는 무시됩니다. 이는 예상치 못한 결과를 초래할 수 있으므로 주의해야 합니다.

이스케이프 시퀀스 사용 시 주의

특히 `\` 문자를 출력하려면 `\\`와 같이 두 번 사용해야 합니다. 셸이 먼저 백슬래시를 해석할 수 있으므로, `printf`에 전달되기 전에 이스케이프 처리가 필요할 수 있습니다. 일반적으로 형식 문자열을 큰따옴표("")로 묶는 것이 안전합니다.


동일 카테고리 명령어