Drucken Sie mehrere leere Zeilen ohne Wiederholung \n

Drucken Sie mehrere leere Zeilen ohne Wiederholung \n

echowird verwendet, um in Linux eine neue Zeile zu erzeugen.

echo -e '\n'2 Zeilen

echo -e '\n\n'3 Zeilen und so weiter.

z.B

user@linux:~$ echo

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


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



user@linux:~$ 

\n\nWäre es möglich, statt einzugeben , etwas wie zu verwenden \n * 3?

Gewünschte Ausgabe

Ich weiß, echo -e '\n * 3'dass das keine drei Zeilen ergeben wird, aber ich hoffe, Sie verstehen, was ich meine.

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



user@linux:~$ 

Antwort1

Wenn Sie bash oder ksh93 oder zsh verwenden, dann

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

erzeugt 3 Zeilenumbrüche. Das {1..3}wird zu erweitert 1 2 3und dann printfgibt das diese als Zeichenfolgen mit der Breite Null gefolgt von einem Zeilenumbruch aus.

Antwort2

Wenn eine POSIX-Lösung erforderlich ist, verwenden Sie:

Schleife

Abgesehen von der offensichtlichen (und hässlich aussehenden) POSIX-Schleife:

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

POSIX (portabel)

Es gibt andere (kürzere, nicht unbedingt schnellere) Lösungen:

(1) Leerzeichen drucken und in Zeilenumbrüche umwandeln.

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

(2) Oder, um 23 Zeilen zu erhalten

seq 23 | tr -dc '\n'

(3) Mit awk:

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

(4) Unter der Annahme, dass IFS standardmäßig

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

(5) sedfügt eine zusätzliche neue Zeile an. Für 23 neue Zeilen verwenden Sie 22:

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

(6) Einige Shells erstellen automatisch alle Array-Elemente mit den niedrigeren Nummern.

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

(7) Holen Sie sich einige NUL-Bytes

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

weithin bekannt

Dies sind neben den bekannteren (und verwendeteren) Lösungen:

(8) headZählen verwenden:

yes '' | head -n 23

(9)NichtPOSIX. Für einige Shells (zumindest ksh, bash, zsh):

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

andere Sprachen

Und natürlich mit (nichtPOSIX) höhere Sprachen:

(10) Perl

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

(11) PHP

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

(12) Python

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

Antwort3

$ yes "" | head -30

um 30 Zeilenumbrüche zu erhalten.

Antwort4

Falls die Verwendung von Python eine Option ist, verhält sich der folgende Befehl wie gewünscht:

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

verwandte Informationen