101 votes

Commande Linux pour répéter une chaîne de caractères n fois

Existe-t-il une commande Linux intégrée qui permette de sortir une chaîne de caractères qui est n fois une chaîne de caractères d'entrée ?

111voto

Adrian Petrescu Points 3128
adrian@Fourier:~$ printf 'HelloWorld\n%.0s' {1..5}
HelloWorld
HelloWorld
HelloWorld
HelloWorld
HelloWorld
adrian@Fourier:~$

93voto

Damian Powell Points 315

Voici une méthode à l'ancienne qui est assez portable :

yes "HelloWorld" | head -n 10

Il s'agit d'une version plus conventionnelle de Adrian Petrescu répondre en utilisant l'expansion des accolades :

for i in {1..5}
do
    echo "HelloWorld"
done

C'est l'équivalent de :

for i in 1 2 3 4 5

C'est une version un peu plus concise et dynamique de de brochet réponse :

printf -v spaces '%*s' 10 ''; printf '%s\n' ${spaces// /ten}

17voto

Dalroth Points 2468

Plusieurs bonnes méthodes ont déjà été mentionnées. On ne peut pas oublier le bon vieux seq cependant :

\[john@awesome\]$for i in \`seq 5\`; do echo "Hi";done
Hi
Hi
Hi
Hi
Hi

17voto

twifkak Points 179

Ceci peut être paramétré et ne nécessite pas de variable temp, FWIW :

printf "%${N}s" | sed 's/ /blah/g'

Ou, si $N est la taille d'un tableau bash :

echo ${ARR[@]/*/blah}

17voto

Wojtek Waga Points 179

Vous pouvez utiliser une astuce. L'écho d'une variable vide n'imprime rien. Vous pouvez donc écrire :

echo word$wojek{1..100}

Si $wojek1 $wojek2 ... $wojek100 sont des variables inexistantes, votre mot sera répété 100 fois sans autre forme de procès.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X