如何创建双换行符?

如何创建双换行符?

我想在终端上打印如下内容:

lollipop
lollipo
lollip
lolli
loll
lol
lo
l

但是,如果我执行两次 -n,则会得到一个换行符,然后如果我使用 echo,它只会打印“-n”。我如何避免这种情况发生,并使运行 X 时不打印此混乱内容:

lollipop
lollipo-nlollip-nlolli-nloll-nlol-nlo-nl

X:

echo lollipop -n lollipo -n lollip -n lolli -n loll -n lol -n lo -n l

答案1

您需要使用 -e“启用反斜杠转义解释”选项和 \n 来强制换行

echo -e "lollipop\nlollipo\nlollip\nlolli\nloll\nlol\nlo\nl"

答案2

改用 printf:

printf "lollipop\nlollipo\nlollip\nlolli\nloll\nlol\nlo\nl"

答案3

更喜欢使用高级和可移植的工具来进行特殊格式化,而不是像 echo 这样的工具。在这里,我使用 AWK 打印随 提供的不断减少的子字符串here-string。请注意,我也可以使用printf "%s" lollipop | awk . . .as well 来获得更好的可移植性

$ awk '{for(i=length($1);i>=1;i--) print substr($1,1,i)}' <<< "lollipop"       
lollipop
lollipo
lollip
lolli
loll
lol
lo
l

AWK 的 print 函数总是打印一行,类似于 java 的System.out.println。这可以替换为print "%s\n",substr($1,1,i)

相关内容