bash script2023. 4. 7. 14:29

 

반달가면 이글루에서 백업 - http://bahndal.egloos.com/533075

 

C언어를 배우면서 가장 먼저 나오는 함수가 printf일텐데, 리눅스 스크립트에서도 printf 명령이 거의 같은 형태로 구현되어 있어서 특정한 형식에 맞춰서 결과를 출력하고 싶을 때 요긴하게 쓸 수 있다.

아래의 몇가지 예시를 보면 감을 잡을 수 있을 것이다. 기본 형태는 printf [형식] [내용] 이런 식이다.

# 줄바꿈(new line) 없이 문자열(%s) 출력
printf "%s" "Hello World"
Hello World(명령 프롬프트가 바로 뒤에 위치)

# 줄바꿈 포함 문자열 출력(\n)
printf "%s\n" "Hello World"
Hello World
(명령 프롬프트가 다음 줄에 위치)

# 탭으로 구분하기(\t)
printf "%s\t%s\n" "Hello" "World"
Hello    World

# 앞에 0을 출력하면서 네자리로 정수(%d) 출력
printf "%04d\n" "123"
0123

# 소수점 두번째 자리까지 실수(%f) 출력(세번째 자리부터 반올림)
printf "%.2f\n" "123.556"
123.56

출력값의 길이를 지정해서 아래의 예시처럼 들여쓰기를 할 수도 있다.

# 길이 7, 소수점 두번째 자리까지 출력
printf "%7.2f\n" "123.556"
 123.56
 
# 길이7, 앞에 0을 출력하면서 소수점 두번째 자리까지 출력
printf "%07.2f\n" "123.556"
0123.56

여러개의 항목을 같이 출력할 때도 요긴하다. 아래의 예시를 보자.

# 이름[탭]이메일[탭]점수
printf "%s\t%s\t%.2f\n" "john" "john@mail.net" "75.332"
john    john@mail.net    75.33

16진수를 10진수로, 또는 10진수를 16진수로 바꿀 때도 편리하다.

# 16진수를 10진수로
printf "%d\n" "0xfeff"
65279

# 10진수를 16진수로
printf "%x\n" "65279"
feff

 

728x90
Posted by 반달가면