Linux技巧|Awk 比较运算符

简介: 在 Awk 中,使用比较运算符(如 >, <, ==, != 等)可方便地过滤文本和字符串。本文通过示例展示了如何处理食品购物清单,标记数量小于或等于 20 的商品。 Awk 语法 `expression { actions; }` 用于根据条件执行操作,如在满足条件的行末尾添加特殊标记。例如,`$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; }` 会在数量小于或等于 20 的行后添加 "TRUE"。继续探索 Awk 的比较运算符以进行更复杂的文本处理。

在处理一行文本中的数字或字符串值时,使用比较运算符过滤文本或字符串对于 Awk 命令来说非常方便。

在 Awk 系列的这一部分中,我们将了解如何使用比较运算符过滤文本或字符串。

比较运算符

Awk 中的比较运算符用于比较数字或字符串的值,它们包括以下内容:

> – 大于
< – 小于
>= – 大于或等于
<= – 小于或等于
== – 等于
!= – 不等于
some_value ~/pattern/ – 如果 some_value 与模式匹配则为 true
some_value !~ /pattern/ – 如果 some_value 与模式不匹配则为 true

现在我们已经了解了 Awk 中的各种比较运算符,让我们通过一个示例更好地理解它们。

在此示例中,我们有一个名为 food_list.txt 的文件,它是不同食品的购物清单,我想通过在每行末尾添加 (**) 来标记数量小于或等于 20 的食品。

在 Awk 中使用比较运算符的一般语法是:

# expression { actions; }

为了实现上述目标,我必须运行以下命令:

# awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' food_list.txt

No    Item_Name`        Quantity    Price
1    Mangoes                     45        $3.45
2    Apples               25        $2.45    **
3    Pineapples           5        $4.45    **
4    Tomatoes           25        $3.45    **
5    Onions               15           $1.45    **
6    Bananas               30           $3.45    **

在上面的例子中,发生了两件重要的事情:

第一个表达式 {
   
    action ; } 组合, $3 <= 30 {
   
    printf “%s\t%s\n”, $0,”**” ; } 打印数量小于或等于 30 的行,并在每行末尾添加 (**)。使用 $3 字段变量访问数量值。

第二个表达式 {
   
    action ; } 组合, $3 > 30 {
   
    print $0 ;} 打印出的行保持不变,因为它们的数量大于 30。

再举一个例子:

# awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20  { print $0 ;} ' food_list.txt 

No    Item_Name        Quantity    Price
1    Mangoes               45        $3.45
2    Apples               25        $2.45
3    Pineapples           5        $4.45    TRUE
4    Tomatoes           25        $3.45
5    Onions               15           $1.45    TRUE
6       Bananas                       30           $3.45

在此示例中,我们希望在末尾添加单词 (TRUE) 来指示数量小于或等于 20 的行。

总结

这是 Awk 中比较运算符的介绍性教程,因此您需要尝试许多其他选项并发现更多内容。如果您遇到任何问题或有任何补充,请在下面的评论部分发表评论。

相关文章
|
Linux Perl
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
在Linux中,如何使用请用 cut 或者 awk,sed命令取出 linux 中 eth0 的 IP 地址?
|
10月前
|
监控 Linux 数据处理
Linux grep技巧 结合awk查询
结合 `grep` 和 `awk`,可以实现灵活、高效的文本处理和数据分析。`grep` 用于快速过滤符合条件的行,`awk` 用于进一步处理和提取数据。这种组合使用在日志分析、数据处理和系统监控等场景中尤为常见。掌握这两者的基本用法和组合技巧,可以大大提升在 Linux 环境下的工作效率。
249 7
|
12月前
|
Linux Perl
Linux awk命令使用技巧
【10月更文挑战第16天】Linux awk命令使用技巧
233 4
|
12月前
|
存储 安全 Linux
Linux文件管理命令md5sum awk
通过结合 `md5sum`和 `awk`,不仅可以高效地进行文件完整性校验,还能灵活地处理和分析校验结果,为系统管理、数据审计等工作提供强大的支持。
280 2
|
Linux 数据处理 Perl
在Linux中,awk命令的如何使用?
在Linux中,awk命令的如何使用?
|
数据挖掘 Linux Perl
在Linux中,awk和sed命令的作用?
在Linux中,awk和sed命令的作用?
|
Linux BI 数据处理
在Linux中,如何使用awk和sed进行文本处理?
在Linux中,如何使用awk和sed进行文本处理?
|
存储 Unix Linux
|
存储 Linux BI
Linux 三剑客 grep、sed、awk
Linux三剑客`grep`、`sed`和`awk`是强大的文本处理工具。`grep`用正则表达式搜索匹配行;`sed`是流式编辑器,处理文本流而不直接修改原文件;`awk`则用于灵活的文本分析和报告生成。例如,`grep`可查找匹配模式,`sed`可以删除文件内容,而`awk`能提取特定字段。通过组合使用,它们能高效解决复杂文本任务。
247 1
|
监控 Unix Linux
Linux中AWK命令的高级应用与案例分析
Linux中AWK命令的高级应用与案例分析