在awk
中,组合模式是指可以同时使用多个条件来过滤或处理输入行。当需要根据多个不同的测试满足情况来选择特定行时,可以组合多个条件。以下是组合模式的一些方式:
逻辑与 (AND):
如果你需要一行数据同时满足两个或更多的条件才执行动作,你可以用&&
连接这些条件。例如:awk '$2 == "zhao" && $3 > 10 { print }' file.txt
上述命令会打印出第二列是“zhao”并且第三列值大于10的行。
逻辑或 (OR):
若要匹配满足任一条件的行,可以使用||
连接条件:awk '$2 != "zhao" || $2 != "qian" { print }' file.txt
此例中,将会打印出第二列既不是“zhao”也不是“qian”的所有行。但要注意这个逻辑可能并不如预期,因为任何非“zhao”的行也会满足条件(同理,任何非“qian”的行也会),所以实际上几乎所有的行都会被打印。
复合模式:
awk
中还可以直接列出多个模式,它们之间默认是逻辑 AND 的关系,只有当所有模式都匹配时才会执行相应的动作:awk '/pattern1/ && $2 >= 5 { action }' file.txt
在此例子中,不仅检查了第二列的数值是否大于等于5,还检查了整行文本是否包含正则表达式
pattern1
。括号明确优先级:
当逻辑操作符结合在一起时,为了确保优先级正确,可以使用括号( )
:awk '($2 == "zhao" || $2 == "qian") && $3 < 10 { print }' file.txt
此命令将打印出第二列是“zhao”或“qian”,并且第三列小于10的所有行。
总结起来,在 awk
中编写多条件判断语句时,关键在于合理地使用逻辑运算符组织你的条件表达式以达到期望的筛选效果。