AWK printf構文

AWK printf構文

私はprintfステートメントの構文がprintf format, item1, item2, ...説明されていると思います。ここ

しかしこの問題printfは次のように使用されます:printf NR "%s ", $0そしてうまくいきます!なぜ?期待されるか。

答え1

これには2つの機能がありますprintfAWK文字列の連結。結果の値と文字列を連結すると、NR "%s "最初の引数として渡されます。NR%sprintf

もっと明確に書く方法は

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

答え2

多くのLinuxディストリビューションでよく見られるmawk-1.3.4には、次の方法でバイパスできる非常に大きなファイルの制限があるため、に変更することをお勧めし%dます。%.f%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

関連情報