![gawk의 printf 함수가 패딩 문자를 설정할 수 있나요?](https://linux55.com/image/206670/gawk%EC%9D%98%20printf%20%ED%95%A8%EC%88%98%EA%B0%80%20%ED%8C%A8%EB%94%A9%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EC%84%A4%EC%A0%95%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
기본적으로 gawk는 공백 문자를 사용하여 지정된 길이만큼 콘텐츠를 채웁니다.
root@u2004:~# awk 'BEGIN{printf("|%+5s|\n", "abc")}'
| abc|
root@u2004:~#
사용자 정의 채우기 문자를 지정할 수 있습니까? 예를 들어, 어떻게 얻을 수 있나요 |__abc|
?
답변1
직접적으로는 아니지만 GNU awk를 사용 gensub
하고 인쇄하려는 문자열에 다른 공백이 없다고 가정합니다( "abc"
이 경우):
$ awk 'BEGIN{ print gensub(/ /,"_","g",sprintf("|%5s|","abc")) }'
|__abc|
또는 문자열에 공백이 포함되어 있는지 여부에 관계없이 awk를 사용하십시오.
$ awk 'BEGIN{ base=sprintf("%1000s",""); gsub(/ /,"_",base);
str="abc"; printf "|%s%s|\n", substr(base,1,5-length(str)), str }'
|__abc|
또는:
$ awk '
BEGIN{ printf "|%s|\n", pad("abc",5,"_") }
function pad(str,len,chr, base) {
base = sprintf("%*s",len-length(str),"")
gsub(/ /,chr,base)
return base str
}
'
|__abc|
답변2
아니요, 작동하지 않습니다. 이 참조에 따르면 다른 패딩 문자를 지원하지 않는 함수를 gawk
사용하십시오 .printf
https://bytes.com/topic/c/answers/219695-printf-padding-alternate-character