gpt4 book ai didi

linux - Bash:如何避免行首出现空白?

转载 作者:IT王子 更新时间:2023-10-29 01:09:12 26 4
gpt4 key购买 nike

在 bash 中给出这样的命令:

echo -e "a b "{1..3}" d e\n"
a b 1 d e
a b 2 d e
a b 3 d e

第 2 行的输出...以空白开头。这是为什么?它从何而来?我怎样才能避免它?

我确实知道如何用 sed 或其他东西摆脱它,但我宁愿首先避免它。

我只提到了它,连同 {..}-Syntax。如果没有它,还有其他类似的案例吗?

更新:

一个有用的解决方法是,用退格键删除第一个字母:

echo -e "\ba b "{1..3}" d e\n"

或者,正如 Jared Ng 所建议的那样:

echo -e "\ra b "{1..3}" d e\n"

更新 2:

我们通过以下方式摆脱了领先的换行符:

echo -e "\na b "{1..4}" d e" | sed '1d'
echo -e "\na b "{1..4}" d e" | tail -n +2

或尾随:

echo -e "\ba b "{1..3}" d e\n" | sed '$d'
echo -e "\ba b "{1..3}" d e\n" | head -n 3

最佳答案

echo -e "\ra b "{1..3}" d e\n"

为我修复它。输出:

a b 1 d e
a b 2 d e
a b 3 d e

(\r 是回车——它将插入符带回行首,防止出现空格)

为什么 bash 这样做?运行 echo "abc"{1..3}。您会看到 bash 输出:abc1 abc2 abc3。注意到中间的空格了吗? {1..3} 扩展表达式,以空格分隔。当您使用换行符时,如在 echo "abc"{1..3}"\n" 中,bash 会保留这些空格并根据要求简单地添加一个换行符。这些是输出中显示的内容。

关于linux - Bash:如何避免行首出现空白?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7067886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com