我刚刚在一份约有2.5亿条记录的文件上运行了这两个命令。
awk '{if(substr($0,472,1)=="9") print $0}' < file1.txt >> file2.txt
并且
nawk '{if(substr($0,472,1)=="9") print $0}' < file1.txt >> file2.txt
记录长度为482。第一个命令给出了file2.txt文件中正确的记录数量,即6000万条,但是nawk命令只给出了420万条。
我感到困惑,想知道是否有人遇到过这样的问题。这个简单的命令在内部被如何处理?使用nawk时是否有一个缓冲区仅能容纳一定数量的字节?
如果有人能对此进行解释,我将不胜感激。
我的操作系统详细信息如下:
SunOS <hostname> 5.10 Generic_147148-26 i86pc i386 i86pc
which awk
,which nawk
的结果。祝大家好运! - shellter