printf不同宽度和换行的列

时间:2014-01-19 05:16:01

标签: bash printf

如何使用printf指定不同的列宽和最后一行?

例如:< --- Col A ---> < ----------------- Col B -----------------> < -Col C->

我已经分解为尝试做这样的单独的printf语句:

printf "%-20s" $COLA && printf "%-14s" $COLB

这一定不是正确的...同样对于换行符我一直在追加回音“”,我知道这是不对的......

printf "%-20s" $COLA && printf "%-14s" $COLB && echo ""

这里的一切都有太多的错误,但我对printf很新

我知道/ n会换行,但是它将一行中的所有字段拆分为新行。

2 个答案:

答案 0 :(得分:2)

结合陈述

printf '%-20s%-14s%s\n' 'Col A' 'Col B' 'Col C'

结果

Col A               Col B         Col C

答案 1 :(得分:0)

printf "%-20s %-14s %s\n" "$COLA" "$COLB" "$COLC"

如果有多个参数而不是转换规范,那么printf会在格式字符串用完时从它开始。但是,上面的调用可确保即使$COLA$COLB$COLC中有空格,也会按预期格式化数据(或者,至少,我认为可以预期)。