Imprime varias líneas vacías sin repetir \n

Imprime varias líneas vacías sin repetir \n

echose utiliza para producir una nueva línea en Linux.

echo -e '\n'2 lineas

echo -e '\n\n'3 líneas y así sucesivamente.

p.ej

user@linux:~$ echo

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


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



user@linux:~$ 

En lugar de escribir \n\n, sería posible utilizar algo como \n * 3.

Salida deseada

echo -e '\n * 3'que no produciré 3 líneas, pero espero que entiendas lo que quiero decir.

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



user@linux:~$ 

Respuesta1

Si está utilizando bash o ksh93 o zsh entonces

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

producirá 3 nuevas líneas. Se {1..3}expande a 1 2 3y luego los printfgenera como cadenas de ancho cero seguidas de una nueva línea.

Respuesta2

Si se requiere una solución POSIX, use:

bucle

Además del obvio (y feo) bucle POSIX:

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

POSIX (portátil)

Existen otras soluciones (más cortas, no necesariamente más rápidas):

(1) Imprimir espacios, convertir a nuevas líneas.

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

(2) O, para obtener 23 líneas

seq 23 | tr -dc '\n'

(3) Usando awk:

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

(4) Suponiendo que IFS es el predeterminado

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

(5) sedagrega una nueva línea adicional; para 23 nuevas líneas, use 22:

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

(6) Algunos shells crean automáticamente todos los elementos de la matriz con números inferiores.

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

(7) Obtener algunos bytes NUL

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

ampliamente conocida

Éstas se encuentran además de las soluciones más conocidas (y utilizadas):

(8) Utilice headel conteo:

yes '' | head -n 23

(9)NoPOSIX. Para algunos shells (ksh, bash, zsh al menos):

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

otros idiomas

Y, por supuesto, usando (noPOSIX) lenguajes de nivel superior:

(10) perla

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

(11) PHP

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

(12) Pitón

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

Respuesta3

$ yes "" | head -30

para conseguirte 30 nuevas líneas.

Respuesta4

En caso de que usar Python sea una opción, el siguiente comando se comporta de la manera deseada:

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

información relacionada