Awk

AWK printf 語法

  • January 18, 2022

我雖然 printf 語句的語法printf format, item1, item2, ...這裡所述

但是,在這個問題中printf 是這樣使用的:printf NR "%s ", $0它有效!為什麼?是預期的嗎?

這裡有兩個功能在起作用:printfAWK 字元串連接NR "%s "產生的值NR和字元串的連接%s ;然後將printf其作為第一個參數。

更清晰的寫法是

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

建議更改%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

引用自:https://unix.stackexchange.com/questions/685794