2
假設我的輸入文件是製表符分隔的,如何識別$ 0是否包含單詞「hello」並且它需要不區分大小寫?使用awk提取包含特定單詞的行記錄
here is a hello whateverColumn2
nonono nonono whateverItIs
here HeLLo again mockColumn2
非常感謝!
假設我的輸入文件是製表符分隔的,如何識別$ 0是否包含單詞「hello」並且它需要不區分大小寫?使用awk提取包含特定單詞的行記錄
here is a hello whateverColumn2
nonono nonono whateverItIs
here HeLLo again mockColumn2
非常感謝!
鑑於你行文件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進行測試
謝謝Levon。如果它需要不區分大小寫呢? :) – trillions
也,腳本不像這一個簡單,因爲我有很多其他的東西......我不知道如何使用匹配方法來做到這一點? – trillions
@ nanshi我回答了忽略情況部分,也基本匹配。如果你需要做更復雜的事情,我會問一個單獨的問題,否則我認爲這個問題的重點可能會過度遷移:-) – Levon