Awk
無法使用 AWK 重定向
我想使用AWK 重定向功能,到目前為止我所做的是:
$ vmstat 1 | awk ' { print $2 > "outfile" } '
*其實前面的命令
awk
要復雜很多,不過是一個簡化的展示。如果我在沒有重定向的情況下執行上述命令,我將在標準輸出中獲得所需的結果。但是在重定向到 之後
outfile
,它仍然是空的:$ cat outfile $
那有什麼問題?
TIA。
awk
緩衝其輸出。如果您的 awk 實現提供了它(如 gawk、mawk 1、nawk 和 BSD awk 所做的那樣),請使用fflush()
.fflush([file]) Flush any buffers associated with the open output file or pipe file. If file is missing or if it is the null string, then flush all open output files and pipes.
所以,這樣寫:
vmstat 1 | awk '{print $2 > "outfile"; fflush()}'
GNU awk 手冊 I/O 部分
fflush
值得一讀。在那裡您還會發現它fflush
已被下一個 POSIX 標準所接受。另外,請注意您可以給出
vmstat
應該輸出的樣本數。因此,如果您只想要5
樣本(例如),您可以等待 5 秒,直到命令終止,然後文件將包含輸出:vmstat 1 5 | awk '{print $2 > "outfile"}'
1使用 mawk 的語法有點不同:
mawk -W interactive '{print $2 > "outfile"; fflush("")}'
.