开发者

ksh + printf , print the line with stat gap

I need to print the following:

  • need smart ways by printf to print this example

    param1 ............... value1

    param2 ............... value2

    param3 ............... value1

    param4 .........开发者_StackOverflow社区...... value2

THX


This works in ksh93. I don't know about earlier versions.

This will print the data in columns with up to n dots between them

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

Here's a demonstration:

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

And the output:

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

A little more complicated and it will do magic tricks:

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 

Output:

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


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜