Awk
AWK printf 語法
我雖然 printf 語句的語法
printf format, item1, item2, ...
如這裡所述但是,在這個問題中printf 是這樣使用的:
printf NR "%s ", $0
它有效!為什麼?是預期的嗎?
這裡有兩個功能在起作用:
printf
和AWK 字元串連接。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