2012-06-19 54 views
2

假設我的輸入文件是製表符分隔的,如何識別$ 0是否包含單詞「hello」並且它需要不區分大小寫?使用awk提取包含特定單詞的行記錄

here is a hello  whateverColumn2 
nonono nonono   whateverItIs 
here HeLLo again  mockColumn2 

非常感謝!

回答

3

鑑於你行文件data.txt

awk -F"\t" '/hello/ {print $0}' data.txt 

將打印

here is a hello  whateverColumn2 
here hello again  mockColumn2 

-F"\t"套標籤作爲字段分隔符的輸入線。

更新(根據意見要求低於OP):

爲了使這個case-insensitive使用IGNORECASE標誌:

awk -F"\t" 'BEGIN{IGNORECASE=1} /hello/ {print $0}' data.txt 

注意,IGNORECASE variable是GNU擴展,可能不在其他版本的AWK中可用。

或者,使用match的示例。爲了使這種情況下不敏感,所述輸入被轉換成小寫字母:

awk -F"\t" '{if (match(tolower($0), "hello")) print $0}' data.txt 

由於匹配可以採取regular expressions,爲小寫轉換可能不是必需的與正確的正則表達式。

在Linux下使用GNU Awk 3.1.6進行測試

+0

謝謝Levon。如果它需要不區分大小寫呢? :) – trillions

+0

也,腳本不像這一個簡單,因爲我有很多其他的東西......我不知道如何使用匹配方法來做到這一點? – trillions

+0

@ nanshi我回答了忽略情況部分,也基本匹配。如果你需要做更復雜的事情,我會問一個單獨的問題,否則我認爲這個問題的重點可能會過度遷移:-) – Levon

相關問題