Печатать несколько пустых строк без повторения \n

Печатать несколько пустых строк без повторения \n

echoиспользуется для создания новой строки в Linux.

echo -e '\n'2 строки

echo -e '\n\n'3 строки и так далее.

например

user@linux:~$ echo

user@linux:~$ echo -e '\n'


user@linux:~$ echo -e '\n\n'



user@linux:~$ 

Вместо того, чтобы вводить \n\n, можно ли использовать что-то вроде \n * 3.

Желаемый результат

Я знаю, echo -e '\n * 3'что не смогу написать три строчки, но надеюсь, вы поняли, что я имею в виду.

user@linux:~$ echo -e '\n * 3' # <== I hope you get what I mean



user@linux:~$ 

решение1

Если вы используете bash или ksh93 или zsh, то

printf '%.0s\n' {1..3}

создаст 3 новых строки. Разворачивается {1..3}до 1 2 3, а затем printfвыводит их как строки нулевой ширины, за которыми следует новая строка.

решение2

Если требуется решение POSIX, используйте:

петля

Рядом с очевидным (и некрасивым на вид) циклом POSIX:

i=0; while [ "$((i+=1))" -le 7 ]; do echo; done

POSIX (переносимый)

Существуют и другие (более короткие, но не обязательно быстрые) решения:

(1) Вывести пробелы, преобразовать в новые строки.

printf '%*s' 30 | tr ' ' '\n'

(2) Или, чтобы получить 23 строки

seq 23 | tr -dc '\n'

(3) Использование awk:

seq 23 | awk '{printf "\n"}'

(4) Предположим, что IFS используется по умолчанию.

printf '%.0s\n' $(seq 23)

(5) sedдобавляет одну дополнительную новую строку, для 23 новых строк используйте 22:

printf '%0*d' 22 | sed 'y/0/\n/'

(6) Некоторые оболочки автоматически создают все элементы массива с меньшими номерами.

zsh -c 'a[33]=1; printf "%.0s\n" "${a[@]}"'

(7) Получить несколько нулевых байтов

head -c 5 /dev/zero | tr '\0' '\n'

широко известный

Вот некоторые из наиболее широко известных (и используемых) решений:

(8) Используйте headсчет:

yes '' | head -n 23

(9)НетPOSIX. Для некоторых оболочек (по крайней мере ksh, bash, zsh):

printf '%.0s\n' {1..23}

Другие языки

И, конечно же, используя (неPOSIX) языки более высокого уровня:

(10) Перл

perl -e 'print "\n" x 23'
perl -E 'say "\n" x 22'  

(11) PHP

php -r 'echo str_repeat( "\n" , 3 );'

(12) Питон

python -c 'print("\n" * 3)'

решение3

$ yes "" | head -30

чтобы получить 30 новых строк.

решение4

Если вы можете использовать Python, следующая команда будет работать так, как вам нужно:

python -c 'print("\n" * 3)'

Связанный контент