left=$(tput cub1) right=$(tput cuf1)
printf %5s1; printf '%s\n' "$left${left}2${right}3"
Detalhes
Do BTO Prompt HOWTO :
tput cub1
move left one space
tput cuf1
non-destructive space (move right one space)
Eu tenho um comando que diz printf "%5s1"
e sua saída é:
1
Como posso imprimir o dígito 2
para a esquerda e o dígito 3
para a direita do 1
já impresso. Então, a saída se parece com abaixo:
213
Portanto, há uma condição aqui em que 1
já foi impresso usando o comando printf "%5s1"
.
Eu tentei usar o comando abaixo
printf "%5s1";printf "\r%4s2%1s3\n"
mas isso sobrescreve a saída existente 1
e eu fico abaixo da saída.
2 3
Como posso imprimir um dígito do lado direito do dígito já impresso 1
usando printf
sem perdê-lo, supondo que eu tenha que usar printf "%5s1"
primeiro? Estou procurando por algo como:
printf "%5s1";printf "\r%4s2???\n"
left=$(tput cub1) right=$(tput cuf1)
printf %5s1; printf '%s\n' "$left${left}2${right}3"
Do BTO Prompt HOWTO :
tput cub1
move left one space
tput cuf1
non-destructive space (move right one space)
Simplesmente inverta a ordem na qual você está imprimindo e imprima a string que você precisa à direita primeiro:
printf "%5s1";printf "3\r%4s2\n"
Além disso, use \b
para backup:
$ printf "%5s1";printf "3\b\b\b2\n"
213