繰り返しなしで複数の空白行を印刷します。\ n

繰り返しなしで複数の空白行を印刷します。\ n

echoLinuxで新しい行を生成するために使用されます。

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

希望の出力

私はそれが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 3printf

答え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) いくつかの NUL バイトを取得します。

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

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

答え3

$ yes "" | head -30

30個の改行文字を提供します。

答え4

Pythonを使用することがオプションの場合は、次のコマンドが必要な方法で機能します。

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

関連情報