一直以来,我们在检查条件是否满足时一直在查看简单的表达式。 如果您想使用多个表达式来检查特定条件怎么办?
在本文中,我们将了解如何组合多个表达式(称为Compound表达式)来在过滤文本或字符串时检查条件。
请参考我们之前的awk系列教程:
Awk 中的Compound表达式
在 Awk 中,Compound表达式是使用 &&
称为是 (and)
和 ||
称为是 (or)
Compound运算符。
Compound表达式的一般语法是:
expression1 && expression2
上述语法表示逻辑 AND 运算,其中表达式 1 和表达式 2 必须都为真,整个表达式才为真。
同样,您可以使用 ||
逻辑或运算的运算符。
expression1 || expression2
这里,表达式之一是 expression1
或者 expression2
必须为真才能使整个表达式为真。
可以使用我们在 awk 系列第 4 部分中介绍的比较运算符来构建表达式。
在本文中,我们将通过实际示例探讨如何在 Linux 中通过 Awk 使用Compound表达式。
示例文件
在此示例中,我们有一个名为的文本文件 tecmint_deals.txt
,其中包含一些令人惊叹的随机 Tecmint 交易列表,其中包括交易名称、价格和类型。
TechMint 交易列表
No Name 价格 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 中使用Compound表达式,如图所示。
awk '$3 >= 10 && $3 <= 20 { 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
示例 2:组合条件
假设我们要过滤“软件”或“技术”类型的产品。 我们可以使用逻辑或运算符 (||)
在我们的Compound表达式中。
awk '$4 == "Software" || $4 == "Tech" { print $0 }' tecmint_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 美元且类型为“未知”的产品。 我们可以通过使用逻辑 AND 运算符 (&&) 将两个条件组合起来来实现此目的:
awk '$3 < 20 && $4 == "Unknown" { print $0 }' tecmint_deals.txt
示例输出:
1 Mac_OS_X_Cleanup_Suite $9.99 Software
5 Nano_Tool_Pack $11.99 Unknown
示例 4:否定条件
最后,假设我们要排除“生活方式”类型的产品。 我们可以通过使用逻辑 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
概括
有些条件总是需要构建Compound表达式才能完全匹配您想要的内容。 当您了解比较和Compound表达式运算符的使用时,根据一些困难的条件过滤文本或字符串将变得很容易。
希望您发现本指南有用,对于任何问题或补充,请始终记住发表评论,您的疑虑将得到相应解决。
资讯来源:由a0资讯编译自THECOINREPUBLIC。版权归作者A0资讯所有,未经许可,不得转载