您正在考虑shell中>
的语义,awk不是shell,因此,除此之外,>
在awk中的含义与在shell中的含义不同.
awk脚本如下:
for (i=1; i<=5; i++) {
print i > "file"
}
与shell 脚本的语义不同,例如:
a)个
for (( i=1; i<=5; i++ )); do
echo "$i" > file
done
当shell 在每次循环迭代中[重新]打开输出文件时,它与如下所示的shell 脚本相同:
b)个
for (( i=1; i<=5; i++ )); do
echo "$i"
done > file
其中,当循环开始时,shell 只打开输出文件一次.
如果您想让awk脚本执行上面的shell 脚本"a)"所做的事情,那么它应该是:
for (i=1; i<=5; i++) {
print i > "file"
close("file")
}
对于您的代码,这将是:
for (i = 0; i < 1000; i++) {
getline < COMMAND
MIN2 = $1
close(COMMAND)
print MIN2 > "lastValue.txt"
close("lastValue.txt")
}
但我想不出为什么要向一个文件写入1000次,然后丢弃前999行,而不是在完成后只写入一次:
for (i = 0; i < 1000; i++) {
getline < COMMAND
MIN2 = $1
close(COMMAND)
}
print MIN2 > "lastValue.txt"