ksh + printf,打印带有stat gap的行

时间:2010-06-01 12:48:22

标签: ksh

我需要打印以下内容:

  • 需要通过printf智能方式打印此示例

    param1 ............... value1
    param2 ............... value2
    param3 ............... value1
    param4 ............... value2

THX

2 个答案:

答案 0 :(得分:2)

这适用于ksh93。我不知道早期版本。

这将在列之间打印数据,其间最多有n个点

n=10
printf "%s %s %s\n" $column1 $(
    printf '.%.0s' {1..$(($n - ${#column1}))}
) $column2

以下是演示:

n=10; j=8
for i in a ab abc abcd; do
    printf "%s %s %3d\n" $i $(
        printf '.%.0s' {1..$((10 - ${#i}))}
    ) $((j++))
done

输出:

a .........   8
ab ........   9
abc .......  10
abcd ......  11

稍微复杂一点,它会做魔术:

n=20
string="mnopqrstuvw"
strl=${#string}
k=0
for i in a ab abc abcd abcde abcd abc ab a
do
    j=${string: -$((strl-(k++)))}
    printf "%s %s %s\n" $i $(
        printf '.%.0s' {1..$((n - ${#i} - ${#j}))}
    ) $j
done 

输出:

a ........ mnopqrstuvw
ab ........ nopqrstuvw
abc ........ opqrstuvw
abcd ........ pqrstuvw
abcde ........ qrstuvw
abcd .......... rstuvw
abc ............ stuvw
ab .............. tuvw
a ................ uvw

答案 1 :(得分:1)

for i in 1 2 3 4
do
   printf "param%d ................. value%d\n" $i $i 
done