【发布时间】:2017-04-18 21:24:37
【问题描述】:
我试过这个方法,但它在新行的开头显示了一个不需要的空格:
$ echo -e {1..5}"\n"
1
2
3
4
5
【问题讨论】:
-
解决方法:
printf -v a "%s\n" {1..5}; echo -n "$a"
标签: bash shell brace-expansion
我试过这个方法,但它在新行的开头显示了一个不需要的空格:
$ echo -e {1..5}"\n"
1
2
3
4
5
【问题讨论】:
printf -v a "%s\n" {1..5}; echo -n "$a"
标签: bash shell brace-expansion
如果你只是想输出一个数字列表,seq 是一个专用工具-
$ seq 1 5
1
2
3
4
5
【讨论】:
大括号扩展创建一个空格分隔的字符串列表。在您的示例中,这意味着您得到1\n 2\n 3\n 4\n 5\n,它解释了每个换行符后的空格。
要获得对输出格式的更多控制,您可以使用循环:
for i in {1..5}; do echo $i; done
【讨论】:
]$ echo -e {1,"\n"{2..5}} 解决这个问题,但是为什么$ echo -e {1..5}"\n" 不起作用
echo -e {1,"\n"{2..5}},您将获得1 \n2 \n3 \n4 \n5。请注意,现在空格在数字之后和 换行符之前。它们没有消失,只是不可见。
for 循环是一种可能的解决方案,因为它会拆分输出并删除空格。
尽可能接近您的原始问题,您可以通过管道传输到 sed。这只是摆脱了那些“不需要的空间”。
echo -e {1..5}'\n' | sed 's/ //g'
在这种情况下 sed 的一般语法:sed 's/REGEXP/REPLACEMENT/FLAGS' 其中 's' = 替换和 '/' = 分隔符
【讨论】:
只需在左大括号前加一个退格键,如下所示:
echo - e \\b{1..5}\\n
【讨论】:
您可以将输出通过管道传输到 tr 以简单地将空格转换为换行符:
$ echo {1..5} | tr ' ' '\n'
1
2
3
4
5
【讨论】: