Como alinhar uma variável de string no Bash

1

Estou tentando alinhar uma variável de string no Bash. Esse é o comportamento desejado.

if str1="123"  , then str2="     123"
if str1="1234" , then str2="    1234"
if str1="12345", then str2="   12345"

Eu vi como fazer isso para imprimir com printf, mas eu preciso fazer dentro da variável sem imprimir.

    
por Jairo Alves 06.11.2018 / 17:38

1 resposta

3

Supondo que a variável contenha apenas caracteres de byte único e largura única:

printf -v str2 %8s "$str1"

Se eles puderem conter caracteres de vários bytes (mas ainda de largura única), você poderá fazer isso:

printf -v str2 %8s%s '' "$str1"
str2=${str2: -8}

(note, no entanto, que esse trunca valores maiores que 8 caracteres).

Aqui o comando bash ' printf builtin suporta -v para armazenar o resultado de printf em uma variável, mas mesmo que você não use a substituição de comando:

str2=$(printf %8s "$str1")
    
por 06.11.2018 / 17:41