printf para n coluna? [duplicado]

1

Isto:

dots=$(printf "%0.s." {1..10})

imprime isso:

.......... .

Gostaria de saber como obter printf no Bash para imprimir . s até uma posição de coluna específica, digamos 30 , onde a coluna de início irá variar.

Por exemplo:

Add dots ....................

Add dots dots ...............

Add dots dots dots ..........

    
por marshki 24.09.2018 / 03:02

1 resposta

0

Em um shell

$ n=30
$ dots=$(printf "%.0s." $(seq $n))
$ echo "$dots"
..............................

Então:

$ n=30
$ str='Add dots '
$ dots=$(printf "%.0s." $(seq $((n-${#str})) ))
$ echo "$str$dots"
Add dots .....................

E:

$ n=30; str='Add dots dots '; dots=$(printf "%.0s." $(seq $((n-${#str})) )); echo "$str$dots"
Add dots dots ................

Em uma função:

$ dots(){ printf "%s" "$2"; printf "%.0s." $( seq $(($1-${#2})) );echo; }
$ dots 30 "Add dots dots dots "
Add dots dots dots ...........

$ dots 40 "Add dots dots dots "
Add dots dots dots .....................

$ dots 33 "we hold these truths "
we hold these truths ............
    
por 24.09.2018 / 03:32