在linux中格式化bash - printf align middle

时间:2013-12-03 21:08:58

标签: bash printf

这行代码:

printf 'ddd %-22s dddd \n' "eeeeeee"

左对齐。

我可以使用什么来将它与中心对齐:

ddd      eeeeeee      dddd

3 个答案:

答案 0 :(得分:2)

有点棘手......但是这个怎么样? ;)

STR="eeeeeee"; printf 'ddd %11s%-11s dddd \n' `echo $STR | cut -c 1-$((${#STR}/2))` `echo $STR | cut -c $((${#STR}/2+1))-${#STR}`

答案 1 :(得分:0)

只需在它周围添加一些标签?

printf "ddd\t\teeeeee\t\tddd"

答案 2 :(得分:0)

printf不支持它,但很容易实现它:

D="12"    # input string
BS=10     # buffer size
L=$(((BS-${#D})/2))
[ $L -lt 0 ] && L=0
printf "start %${L}s%s%${L}s end\n" "" $D ""
相关问题