Awk
是否可以為 gawk 的 printf 函式設置填充字元?
預設情況下,gawk 使用空格字元將內容填充到指定長度:
root@u2004:~# awk 'BEGIN{printf("|%+5s|\n", "abc")}' | abc| root@u2004:~#
是否可以指定自定義填充字元?例如,我怎樣才能得到
|__abc|
?
不是直接,而是使用 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|