AWK printf 语法

AWK printf 语法

我认为 printf 语句的语法printf format, item1, item2, ...如所描述的,例如这里

然而,在这个问题printf 是这样使用的:printf NR "%s ", $0并且它有效!为什么?是预期的吗?

答案1

这里有两个功能在起作用:printf、 和AWK 字符串连接。生成 的值和 字符串NR "%s "的串联;然后将其作为第一个参数。NR%sprintf

更清晰的写法是

printf "%d%s ", NR, $0

答案2

建议更改%d%.f,因为在许多 Linux 发行版中常见的 mawk-1.3.4 对非常大的文件有限制,%d/%u只能通过以下方式规避%.f

% date | mawk  '{ NR=9E9-7; printf("%d\f%s\n",NR,$0) }'
2147483647
          Tue Jan 18 01:49:52 EST 2022

% date | mawk  '{ NR=9E9-7; printf("%.f\f%s\n",NR,$0) }'
8999999993
          Tue Jan 18 01:49:58 EST 2022

相关内容