awk中比较运算符

awk 中的比较运算符是什么?

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

  1. > - 大于
  2. < - 小于
  3. >= – 大于或等于
  4. <= – 小于或等于
  5. == - 等于
  6. != - 不等于
  7. some_value ~ / pattern/ – 如果 some_value 匹配模式,则为真
  8. some_value !~ / pattern/ – 如果 some_value 与模式不匹配,则为真

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

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

  1. > cat rumenz.txt
  2. No Item_Name Quantity Price
  3. 1 Mangoes 45 $45
  4. 2 Apples 25 $45
  5. 3 Pineapples 5 $45
  6. 4 Tomatoes 25 $45
  7. 5 Onions 15 $45
  8. 6 Bananas 30 $45

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

  1. > expression { actions; }

查询数量少于30的数据

  1. > awk '$3<30' rumenz.txt
  2. 2 Apples 25 $45
  3. 3 Pineapples 5 $45
  4. 4 Tomatoes 25 $45
  5. 5 Onions 15 $45

查询数量大于20但是小于30的数据

  1. > awk '$3>20 && $3<30 ' rumenz.txt
  2. 2 Apples 25 $45
  3. 4 Tomatoes 25 $45

查询编号为3的数据

  1. > awk '$1==3' rumenz.txt
  2. 3 Pineapples 5 $45

查询编号为3的商品名

  1. > awk '$1==3{print $2 }' rumenz.txt
  2. Pineapples

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

  1. > awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' rumenz.txt
  2. No Item_Name` Quantity Price
  3. 1 Mangoes 45 $45
  4. 2 Apples 25 $45 **
  5. 3 Pineapples 5 $45 **
  6. 4 Tomatoes 25 $45 **
  7. 5 Onions 15 $45 **
  8. 6 Bananas 30 $45 **

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

  1. 第一个表情 { action ; } 组合, $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; } 打印出数量小于或等于的行 30 并添加一个 (**)在每一行的末尾。数量的值是使用访问$3变量。
  2. 第二种表达 { action ; } 组合, $3 > 30 { print $0 ;} 打印出未更改的行,因为它们的数量大于30.

再举一个例子:

  1. > awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20 { print $0 ;}' rumenz.txt
  2. No Item_Name Quantity Price
  3. 1 Mangoes 45 $45
  4. 2 Apples 25 $45
  5. 3 Pineapples 5 $45 TRUE
  6. 4 Tomatoes 25 $45
  7. 5 Onions 15 $45 TRUE
  8. 6 Bananas 30 $45

在这个例子中,我们想要表示数量小于或等于 20 用这个词 (TRUE) 在末尾。

返回笔记列表
入门小站