3

假设我的输入文件是制表符分隔的,我如何识别 $0 是否包含单词“hello”并且它需要不区分大小写?

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

非常感谢!

4

1 回答 1

4

鉴于您在文件中的行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 测试

于 2012-06-19T18:03:50.563 回答