如何在awk中将参数传递到printf?
format.awk很简单如何在awk中将参数传递到printf?,awk,arguments,Awk,Arguments,format.awk很简单 #! /usr/bin/awk { printf("%52s\\\n" ,$0); } 命令即将执行 awk -f format.awk test 现在我想在printf(“%52s\\n”$0)中设置数字52作为变量 awk -f format.awk -v n=52 如果我想将参数52转换为.awk格式,那么如何编写语句 printf("%ns\\\n" ,$0); awk -f format.awk -v n=52 test awk:运行时
#! /usr/bin/awk
{
printf("%52s\\\n" ,$0);
}
命令即将执行
awk -f format.awk test
现在我想在printf(“%52s\\n”$0)中设置数字52作为变量
awk -f format.awk -v n=52
如果我想将参数52转换为.awk格式,那么如何编写语句
printf("%ns\\\n" ,$0);
awk -f format.awk -v n=52 test
awk:运行时错误:printf(“%-ns”)中的转换(数字1)不正确\
”)FILENAME=“test”FNR=2 NR=2在
awk
中,字符串插值不是这样工作的。你需要说
printf("%" n "s", $0)
是的,您可以看到以下示例:
kent$ awk 'BEGIN{a=3;printf "%.*f\n",a,10/3}'
3.333
kent$ awk 'BEGIN{a=7;printf "%.*f\n",a,10/3}'
3.3333333
语法与C的printf()
相同,带有*
编辑(添加单据报价) C库printf的动态宽度和prec功能(例如。, 支持“%*.*s”)。而不是提供明确的宽度和/或prec 格式字符串中的值,它们将在参数列表中传递 引用gnu awk手册: