列印多個空白行而不重複 \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'不會產生 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) 某些 shell 會自動建立所有編號較低的陣列元素。

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。對於某些 shell(至少是 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)'

相關內容