在awk中的字段中搜索特定的字符串

问题描述:

我正在使用cygwin for windows在awk中编码,实际上我对这种语言非常陌生。如果在特定领域存在特定的字符串,我写了一个小的一行来打印整行。在awk中的字段中搜索特定的字符串

$ awk -F '[:,]' '{if($9 == "QueCmd0") print $0 }' #QueCmd0 is the name of the string. 

“:”和“,”是字段分隔符。

对于小文本文件(高达6-7MB左右),代码工作正常,但当.txt文件很大(约10-15MB)时,此代码不显示输出。我不知道问题出在哪里。 如果有什么我应该知道的,请帮助我。

在此先感谢

+3

在旁注中,您的脚本如果相当于“$ 9 ==”“QueCmd0”“'。这就是'awk'中的块的工作方式。 – Bernhard

+1

您是否可以使用整个日志中的示例行更新问题? – Inian

+1

'awk'和大文件一样好用,就像小文件一样。正如Inian所说,你需要显示一个或多个你认为应该打印但没有打印的大文件。选择这些行后,您可以点击[编辑](http://*.com/posts/37742363/edit)并将其添加到问题中。 – John1024

awk -F '[:,]' '{if($9 == "QueCmd0") print $0}' 
awk -F '[:,]' '{if($9 == "QueCmd0") print}' 
awk -F '[:,]' '$9 == "QueCmd0" {print}' 
awk -F '[:,]' '$9 == "QueCmd0"' 

没有什么在使awk失败更大的文件所固有的,
操作系统使用的是,我不能保证。

也许它会喜欢更短的版本?

+0

是的,问题发生是因为文本以unicode编码,而当更改为UTF-8时,工作正常 – pr21196