假设我的输入文件是制表符分隔的,我如何识别 $0 是否包含单词“hello”并且它需要不区分大小写?
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 在下面评论中的要求):
要使此不区分大小写,请使用以下IGNORECASE
标志:
awk -F"\t" 'BEGIN{IGNORECASE=1} /hello/ {print $0}' data.txt
请注意,IGNORECASE 变量是 GNU 扩展,在其他版本的 AWK 中可能不可用。
或者,使用match
. 为了不区分大小写,输入被转换为小写:
awk -F"\t" '{if (match(tolower($0), "hello")) print $0}' data.txt
由于 match 可以采用正则表达式,因此使用正确的正则表达式可能不需要转换为小写。
在 Linux 下使用 GNU Awk 3.1.6 测试