
고정 출력 너비를 사용하는 방법은 무엇입니까 printf
?
다음은 예제 스크립트입니다:
#!/bin/bash
OK=$(printf '\t%+50s\n' OK)
FAIL=$(printf '\t%+50s\n' FAIL)
for i in a aa aaa aaaa aaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa; do
echo "$i $OK"
done
산출:
a OK
aa OK
aaa OK
aaaa OK
aaaaaa OK
aaaaaaaaaaaaaaaaa OK
aaaaaaaaaaaaaaaaaaaaaaaaaa OK
나는 다음과 같은 것을 원합니다 :
a OK
aa OK
aaa OK
aaaa OK
aaaaaa OK
aaaaaaaaaaaaaaaaa OK
aaaaaaaaaaaaaaaaaaaaaaaaaa OK
답변1
간단한 방법:
스크립트를 파이프로 연결하세요.column -t
$ script.sh | column -t
a OK
aa OK
aaa OK
aaaa OK
aaaaaa OK
aaaaaaaaaaaaaaaaa OK
aaaaaaaaaaaaaaaaaaaaaaaaaa OK
답변2
printf
원하는 출력을 얻으려면 다음 방법을 사용하십시오 .
#!/bin/bash
for i in a aa aaa aaaa aaaaaa aaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaa; do
printf '%-50sOK\n' $i
done
스크립트 출력:
a OK
aa OK
aaa OK
aaaa OK
aaaaaa OK
aaaaaaaaaaaaaaaaa OK
aaaaaaaaaaaaaaaaaaaaaaaaaa OK
OK
- 정적 문자열을 다음 위치로 이동할 때체재(printf FORMAT [ARGUMENT]
)$i
-printf
인수 로 처리됨
답변3
출력 형식을 지정하는 도구를 사용하지 않고 있으며 $i
너비가 증가함에 따라 출력이 정렬되지 않습니다.
바꾸다
echo "$i $OK"
그리고
printf "%-50s %s\n" "$i" "$OK"
("foo"를 실제 문자열로 바꾸세요).
어디
50s
고정 너비 50자 문자열입니다.-
(빼기 기호)는 문자열을 왼쪽 정렬합니다.man 3 printf
형식 문자열에 대한 자세한 내용은 을 참조하십시오.