在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)/'