Imprima várias linhas vazias sem repetir \n

Imprima várias linhas vazias sem repetir \n

echoé usado para produzir uma nova linha em Linux.

echo -e '\n'2 linhas

echo -e '\n\n'3 linhas e assim por diante.

por exemplo

user@linux:~$ echo

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


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



user@linux:~$ 

Em vez de digitar \n\n, seria possível usar algo como \n * 3.

Saída Desejada

Eu sei echo -e '\n * 3'que não produzirei 3 linhas, mas espero que você entenda o que quero dizer.

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



user@linux:~$ 

Responder1

Se você estiver usando bash ou ksh93 ou zsh então

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

produzirá 3 novas linhas. O {1..3}expande para 1 2 3e, em seguida, as printfsaídas como strings de largura zero seguidas de nova linha.

Responder2

Se for necessária uma solução POSIX, use:

laço

Ao lado do loop POSIX óbvio (e feio):

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

POSIX (portátil)

Existem outras soluções (mais curtas, não necessariamente mais rápidas):

(1) Imprima espaços, converta em novas linhas.

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

(2) Ou, para obter 23 linhas

seq 23 | tr -dc '\n'

(3) Usando awk:

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

(4) Assumindo que IFS é o padrão

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

(5) sedanexa uma nova linha adicional, para 23 novas linhas, use 22:

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

(6) Alguns shells criam automaticamente todos os elementos da matriz com numeração inferior.

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

(7) Obtenha alguns bytes NUL

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

Amplamente conhecido

Essas estão ao lado das soluções mais conhecidas (e usadas):

(8) Use headcontagem:

yes '' | head -n 23

(9)NãoPOSIX. Para alguns shells (ksh, bash, zsh pelo menos):

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

outras línguas

E, claro, usando (nãoPOSIX) linguagens de nível superior:

(10) Perl

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

(11) PHP

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

(12) Pitão

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

Responder3

$ yes "" | head -30

para obter 30 novas linhas.

Responder4

Caso usar python seja uma opção, o seguinte comando se comporta da maneira que você deseja:

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

informação relacionada