adrian@Fourier:~$ printf 'HelloWorld\n%.0s' HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld adrian@Fourier:~$
Linux команда повторить строку n раз
Есть ли какая-либо встроенная команда Linux, которая позволяет выводить строку, которая в n раз больше входной строки ??
16 ответов на вопрос
- Популярные
- Новые
- С комментариями
- Активные
Вот старомодный способ, который довольно портативный:
yes "HelloWorld" | head -n 10
Это более общепринятая версия ответа Адриана Петреску с использованием расширения скобки:
for i in do echo "HelloWorld" done
Это эквивалентно:
for i in 1 2 3 4 5
Это немного более краткая и динамичная версия щуки ответа:
printf -v spaces '%*s' 10 ''; printf '%s\n' $
Несколько хороших способов уже упоминалось. Не могу забыть о старом добром, seq
хотя:
[john @ awesome] $ для меня в `seq 5`; сделать эхо "Привет" сделано Привет Привет Привет Привет Привет
Возможно, другой способ, который является более общим и полезным для вас:
adrian@Fourier:~$ n=5 adrian@Fourier:~$ for (( c=1; c<=n; c++)) ; do echo "HelloWorld" ; done HelloWorld HelloWorld HelloWorld HelloWorld HelloWorld adrian@Fourier:~$
Оболочка bash более мощная, чем думает большинство людей :)
Вы можете использовать трюк. Вывод пустой переменной ничего не печатает. Таким образом, вы можете написать:
echo word$wojek
Если $wojek1 $wojek2
... $wojek100
несуществующие переменные, ваше слово будет повторяться 100 раз без чего-либо еще.
Это может быть параметризовано и не требует временной переменной, FWIW:
printf "%$s" | sed 's/ /blah/g'
Или, если $N
это размер массива bash:
echo $
повторить n
раз, просто положить n-1
,
в {}
:
$ echo 'helloworld'{,,} helloworld helloworld helloworld
awk 'BEGIN '
Результат
Привет привет привет привет
основываясь на том, на что намекал @pike
для каждого символа в строке эхо-строки
echo $
Пример заголовка, подчеркнутого =
символами
export heading='ABCDEF'; export replace='='; echo -e "$\n$"
будет выводить
ABCDEF ======
Кажется, это порт между Linux и OS X, и это делает меня счастливым.
NJoy!
Если вы на BSD, вы можете просто использовать seq
.
$ seq -f "Hello, world" 5 Hello, world Hello, world Hello, world Hello, world Hello, world
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4