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

相关文章
|
19天前
|
Linux Perl
Linux|从 STDIN 读取 Awk 输入
Linux|从 STDIN 读取 Awk 输入
20 4
|
1月前
|
搜索推荐 Linux 开发工具
【Linux】深入理解awk命令
【Linux】深入理解awk命令
45 0
|
2月前
|
Shell Linux
Linux下的Shell基础——变量、运算符、条件判断(二)
Linux下的Shell基础——变量、运算符、条件判断(二)
46 0
|
2月前
|
Linux Perl
百度搜索:蓝易云【Linux常用命令awk】
以上仅是awk命令的一些常见用法,它还有许多更复杂的功能和用法,可以根据需要灵活运用。awk在文本处理和数据分析中非常实用,是Linux系统中的一把利器。
25 2
|
1月前
|
存储 监控 Linux
性能工具之linux三剑客awk、grep、sed详解
Linux 三剑客 awk,sed和grep 在性能领域广泛用于性能建模、性能监控及性能分析等方面,也是各大互联网公司测试岗高频面试题,中高端测试人员必备技能之一。
53 1
性能工具之linux三剑客awk、grep、sed详解
|
1天前
|
存储 Linux Shell
Linux|Awk 变量、数字表达式和赋值运算符
Linux|Awk 变量、数字表达式和赋值运算符
7 2
|
23天前
|
Linux Perl
Linux| Awk 中“next”命令奇用
Linux| Awk 中“next”命令奇用
26 9
|
1月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
【Shell 命令集合 文件管理】Linux 文本处理工具 awk命令使用指南
34 0
|
1月前
|
存储 Linux Perl
Linux|Awk 特定模式 过滤 文本
Linux|Awk 特定模式 过滤 文本
11 0
|
5月前
|
存储 Linux Shell
Linux awk命令
除了使用 sed 命令,Linux 系统中还有一个功能更加强大的文本数据处理工具,就是 awk。 曾有人推测 awk 命令的名字来源于 awkward 这个单词。其实不然,此命令的设计者有 3 位,他们的姓分别是 Aho、Weingberger 和 Kernighan,awk 就取自这 3 为大师姓的首字母。 和 sed 命令类似,awk 命令也是逐行扫描文件(从第 1 行到最后一行),寻找含有目标文本的行,如果匹配成功,则会在该行上执行用户想要的操作;反之,则不对行做任何处理。awk 命令的基本格式为: [root@localhost ~]# awk [选项] '脚本命令' 文件名
73 1