web-dev-qa-db-fra.com

Comment laisser un texte justifié en bash?

Étant donné un texte, $txt, comment pourrais-je laisser le justifier à une largeur donnée dans Bash.

Exemple (largeur = 10):

Si $txt=hello, Je voudrais imprimer:

hello     |

Si $txt=1234567890, Je voudrais imprimer:

1234567890|
30
Misha Moroshko

Vous pouvez utiliser la commande printf, comme ceci:

printf "%-10s |\n" "$txt"

Le %s signifie interpréter l'argument comme une chaîne, et le -10 lui indique de justifier à gauche jusqu'à la largeur 10 (les nombres négatifs signifient justifier à gauche tandis que les nombres positifs justifient à droite). Le \n est requis pour imprimer une nouvelle ligne, car printf n'en ajoute pas implicitement.

Remarque que man printf décrit brièvement cette commande, mais la documentation complète au format se trouve dans la page de manuel de la fonction C dans man 3 printf.

44
drrlvn

Vous pouvez utiliser le - flag pour la justification de gauche.

Exemple:

[jaypal:~] printf "%10s\n" $txt
     hello
[jaypal:~] printf "%-10s\n" $txt
hello    
3
jaypal singh

bash contient un printf intégré

txt=1234567890
printf "%-10s\n" "$txt"
1
SiegeX