2016-06-10 128 views
-1

我正在使用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://stackoverflow.com/posts/37742363/edit)並將其添加到問題中。 – John1024

回答

0
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