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 ?

11voto

Adrian Petrescu Points 3128

Peut-être un autre moyen plus général et plus utile pour vous :

adrian@Fourier:~$ n=5
adrian@Fourier:~$ for (( c=1; c<=n; c++)) ; do echo "HelloWorld" ; done
HelloWorld
HelloWorld
HelloWorld
HelloWorld
HelloWorld
adrian@Fourier:~$ 

Le bash Shell est plus puissant que la plupart des gens le pensent :)

9voto

kev Points 11612

Répéter n fois, il suffit de mettre n-1 des virgules entre {} :

$ echo 'helloworld'{,,}
helloworld helloworld helloworld

Répète 'helloworld' deux fois après le premier écho.

6voto

Red Tux Points 2074

POSIX AWK :

#!/usr/bin/awk -f
function str_repeat(s1, n1) {
   s2 = ""
   for (n2 = 1; n2 <= n1; n2++) {
      s2 = s2 s1
   }
   return s2
}
BEGIN {
   s3 = str_repeat("Sun", 5)
   print s3
}

Ou PHP :

<?php
$s3 = str_repeat('Sun', 5);
echo $s3, "\n";

5voto

nickl- Points 470

En fonction de ce que @pike laissait entendre

pour chaque caractère de la chaîne de caractères echo string

echo ${target//?/$replace}

Un exemple d'un titre souligné par = caractères

export heading='ABCDEF'; 
export replace='='; 
echo -e "${heading}\n${heading//?/$replace}"

produira

ABCDEF
======

Il semble qu'il y ait un portage entre Linux et OS X, ce qui me réjouit.

nJoy !

5voto

n.caillou Points 150

J'ai connu des avertissements de rupture de canalisation avec les yes Voici donc une autre bonne alternative :

$ seq 4 | sed "c foo"
foo
foo
foo
foo

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