Bash 如何使用printf添加带有尾随空格的换行符?

Bash 如何使用printf添加带有尾随空格的换行符?,bash,printf,Bash,Printf,我有下面的printf命令,它可以在字符串ABC之后添加5个空格,然后打印字符串DEF printf '%s%*s' "ABC" 5 '' "DEF" 我想在字符串DEF之后的末尾添加一个换行符,但我不知道如何操作。我尝试过以下方法,但没有成功: user /d $ printf '%s%*s' "ABC" 5 '' "DEF\n" ABC DEF\n user /d $ printf '%s%*s\n' "ABC" 5 '' "DEF" ABC DEF 应该怎么做?提前感谢您可

我有下面的printf命令,它可以在字符串ABC之后添加5个空格,然后打印字符串DEF

printf '%s%*s' "ABC" 5 '' "DEF" 
我想在字符串DEF之后的末尾添加一个换行符,但我不知道如何操作。我尝试过以下方法,但没有成功:

user /d
$ printf '%s%*s' "ABC" 5 '' "DEF\n"
ABC     DEF\n

user /d
$ printf '%s%*s\n' "ABC" 5 '' "DEF"
ABC
DEF
应该怎么做?提前感谢

您可以使用$'\n'获取换行:

printf '%s%*s' "ABC" 5 '' $'DEF\n'
这对我不起作用

printf '%s%*s\n' "ABC" 5 '' "DEF"
因为printf格式比总参数少一个。首先%s用于ABC,然后%*s用于输出5个空格。但是DEF没有格式,因此\n被附加到两个参数中。

您可以使用$'\n'获取换行符:

printf '%s%*s' "ABC" 5 '' $'DEF\n'
这对我不起作用

printf '%s%*s\n' "ABC" 5 '' "DEF"

因为printf格式比总参数少一个。首先%s用于ABC,然后%*s用于输出5个空格。但是DEF没有格式,因此\n被附加到两个参数中。

为DEF添加另一个字符串占位符和一个新行字符:

printf '%s%*s%s\n' "ABC" 5 '' "DEF"

为DEF添加另一个字符串占位符和新行字符:

printf '%s%*s%s\n' "ABC" 5 '' "DEF"

@阿努布瓦。谢谢你的帮助。它起作用了。一个问题:为什么这可以打印“%s\n”ABC,但在本例中,换行符不能打印“%s%*s\n”ABC 5 DEF?您还可以使用:printf“%s%*sDEF\n”ABC 5它不能与printf“%s%*s\n”ABC 5 DEF一起使用,因为printf格式缺少一个总参数。首先%s用于ABC,然后%*s用于输出5个空格。但是DEF没有格式,因此\n被附加到两个参数。已理解。按照您所说的,我改为'printf'%s%*s%s\n'ABC 5'DEF',这样就行了。非常感谢你的帮助。@anubhva。谢谢你的帮助。它起作用了。一个问题:为什么这可以打印“%s\n”ABC,但在本例中,换行符不能打印“%s%*s\n”ABC 5 DEF?您还可以使用:printf“%s%*sDEF\n”ABC 5它不能与printf“%s%*s\n”ABC 5 DEF一起使用,因为printf格式缺少一个总参数。首先%s用于ABC,然后%*s用于输出5个空格。但是DEF没有格式,因此\n被附加到两个参数。已理解。按照您所说的,我改为'printf'%s%*s%s\n'ABC 5'DEF',这样就行了。非常感谢你的帮助。