使用 awk 列搜索命令进行多个搜索项

使用 awk 列搜索命令进行多个搜索项

awk如下命令中,在第二列中搜索关键字mouse,我如何添加另一个搜索词来执行搜索,例如“mouse keyboard“ 或者 ”mouse 或者 keyboard“?

我想避免执行多个命令。

awk -F'\t' '$2~/mouse/' allcombined.txt

答案1

要添加一个条件,&&在这里使用:

awk -F'\t' '$2~/mouse/ && $3 ~ /keyboard/' allcombined.txt
                       ^
                        \---

(我任意选择要求字段 3 匹配“键盘”。

要添加一个或者条件、用途||

awk  -F'\t' '$2~/mouse/ || $2 ~ /keyboard/' allcombined.txt

(这里,字段 2 可以匹配“鼠标”或“键盘”)。

一旦您的逻辑超出三个元素,您就需要使用括号:

awk  -F'\t' '($2~/mouse/ || $2 ~ /keyboard/) && $4 ~ /CIO/' allcombined.txt

答案2

在你的awk代码中,让测试说

$2 ~ /mouse/ || $2 ~ /keyboard/

或改为||&&and”。

请注意,这将执行正则表达式匹配(/mouse/将匹配字符串a mouse called Henry)。要进行精确的字符串比较,请使用例如$2 == "mouse"等。

答案3

$ awk  -F'\t' '$2~/(mouse|keyboard)/ && $3~/(x|y)/'

相关内容