假设我的输入文件是制表符分隔的,我如何识别$ 0是否包含单词“hello”并且它需要不区分大小写?
here is a hello whateverColumn2
nonono nonono whateverItIs
here HeLLo again mockColumn2
非常感谢!
答案 0 :(得分: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进行测试