如何在 Linux 中通过 Awk 使用Compound表达式

一直以来,我们在检查条件是否满足时一直在查看简单的表达式。 如果您想使用多个表达式来检查特定条件怎么办?

在本文中,我们将了解如何组合多个表达式(称为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表达式运算符的使用时,根据一些困难的条件过滤文本或字符串将变得很容易。

希望您发现本指南有用,对于任何问题或补充,请始终记住发表评论,您的疑虑将得到相应解决。

资讯来源:由0x资讯编译自TECMINT。版权归作者Aaron Kili所有,未经许可,不得转载

资讯来源:由a0资讯编译自THECOINREPUBLIC。版权归作者A0资讯所有,未经许可,不得转载

上一篇 2024年 5月 31日
下一篇 2024年 5月 31日

相关推荐