Comment justifier le texte à gauche dans bash?

Étant donné un texte, $txt, Comment pourrais-je 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|
25
demandé sur Misha Moroshko 2012-01-25 01:02:37

3 réponses

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 dit de Left justify à la largeur 10 (les nombres négatifs signifient left justify tandis que les nombres positifs justifient à droite). Le {[4] } est nécessaire pour imprimer une nouvelle ligne, puisque printf n'en ajoute pas implicitement.

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

42
répondu drrlvn 2012-01-24 21:11:53

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

Exemple:

[jaypal:~] printf "%10s\n" $txt
     hello
[jaypal:~] printf "%-10s\n" $txt
hello    
3
répondu jaypal singh 2012-01-24 21:06:40

bash contient un printf intégré

txt=1234567890
printf "%-10s\n" "$txt"
1
répondu SiegeX 2012-01-24 21:06:06