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传递给format.awk,如何编写语句
printf("%ns\\\n" ,$0);
awk -f format.awk -v n=52 test
awk:运行时错误:printf中的转换不正确(编号1)(“% - ns \
“)
FILENAME =“test”FNR = 2 NR = 2
答案 0 :(得分:2)
是的,你可以,见下面的例子:
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的动态宽度和预处理能力(例如, "%*。* s")受支持。而不是提供明确的宽度和/或prec 格式字符串中的值,它们在参数列表中传递。
引自gnu awk手册: https://www.gnu.org/software/gawk/manual/html_node/Format-Modifiers.html
答案 1 :(得分:0)
在awk
中,字符串插值不起作用。你需要说
printf("%" n "s", $0)