在使用Linux系统的时候,可能经常需要用到能够检查条件是否满足的简单表达式。更进一步来说,或许你可能还想使用多个表达式来检查特定条件,这时该怎么办?
其实,可以通过复合命令来实现。在本文中,小编将简单介绍通过Awk命令组合多个表达式(称为复合表达式)来在过滤文本或字符串时检查条件,并且通过一些实例演示来帮助大家更好理解。
Awk中的复合表达式
在Awk中,复合表达式使用&&
(称为and)
)和||
(称为or
)复合运算符构建,复合表达式一般语法是:
expression1 && expression2
上述语法表示逻辑AND运算,其中表达式1和表达式2都必须为真,整个表达式才为真。
类似地,你也可以使用||
运算符进行逻辑或运算,可以表示为:
expression1 || expression2
在这里,要想整个表达式要为真,expression1
或expression2
中的一个必须为真。你可以使用Awk比较运算符来构建表达式。
接下来,小编将通过实际示例介绍如何在Linux系统中使用Awk复合表达式。
示例文件
在这个例子中,有一个名为的文本文件ecscoupon_deals.txt
,其中包含一些随机Ecscoupon交易的列表,其中包括交易的名称、价格和类型,其交易清单内容如下:
No Name Price Type 1 Mac_OS_X_Cleanup_Suite $9.99 Software 2 Basics_Notebook $14.99 Lifestyle 3 Tactical_Pen $25.99 Lifestyle 4 Scapple $19.00 Unknown 5 Nano_Tool_Pack $11.99 Unknown 6 Ditto_Bluetooth_Altering_Device $33.00 Tech 7 Nano_Prowler_Mini_Drone $36.99 Tech
示例1:按价格范围过滤
假设现在需要筛选价格在10美元到20美元之间的产品,可以使用Awk中的复合表达式,具体如下:
awk '$3 >= 10 && $3 <= 20 { print $0 }' ecscoupon_deals.txt
样本输出:
1 Mac_OS_X_Cleanup_Suite $9.99 Software 4 Scapple $19.00 Unknown 5 Nano_Tool_Pack $11.99 Unknown
示例2:组合条件
假设现在想要过滤类型为“Software”或“Tech”的产品,则可以在复合表达式中使用逻辑或(||)
运算符。
awk '$4 == "Software" || $4 == "Tech" { print $0 }' ecscoupon_deals.txt
样本输出:
1 Mac_OS_X_Cleanup_Suite $9.99 Software 6 Ditto_Bluetooth_Altering_Device $33.00 Tech 7 Nano_Prowler_Mini_Drone $36.99 Tech
示例3:条件组合
假设想要过滤价格低于20美元且类型为“Unknown”的产品,这时可以通过使用逻辑AND(&&)运算符结合两个条件来实现这一点:
awk '$3 < 20 && $4 == "Unknown" { print $0 }' ecscoupon_deals.txt
样本输出:
4 Scapple $19.90 Unknown 5 Nano_Tool_Pack $11.99 Unknown
示例4:否定条件
最后,假设我们想要排除“ Lifestyle ”类型的产品,则可以通过使用逻辑NOT运算符(!)否定条件来实现这一点:
awk '$4 != "Lifestyle" { print $0 }' tecmint_deals.txt
样本输出:
1 Mac_OS_X_Cleanup_Suite $9.99 Software 4 Scapple $19.00 Unknown 5 Nano_Tool_Pack $11.99 Unknown 6 Ditto_Bluetooth_Altering_Device $33.00 Tech 7 Nano_Prowler_Mini_Drone $36.99 Tech
小结
通过上面的演示实例可以发现,有些条件总是需要构建复合表达式才能准确匹配你想要的内容。因此,当你理解比较和复合表达式运算符的用法时,根据一些困难的条件过滤文本或字符串将变得容易。
总之,如果需要再Linux系统中使用复合表达式的话,可以借助Awk命令来实现,相对来说使用较为简单,适合Linux新手用户使用。