如何在Linux中使用比较运算符与Awk  - 第4部分

当使用数字或字符串值一行文本,文本过滤或使用比较操作字符串的处理就派上用场了awk命令的用户。

在这部分awk的系列 ,我们将看看如何可以过滤文本或使用比较操作字符串。 如果你是一个程序员,那么你必须已经熟悉比较运算符,但那些不是,让我在下面的部分解释。

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

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

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

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

在这个例子中,我们有一个名为food_list.txt文件,该文件是对不同的食品的购物清单,我想标志,其数量小于或等于20,加入食品(**)在每一行的末尾。

文件 - 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

在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	**

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

  1. 第一个表达式{行动; }组合则是$ <= 30 {printf的“%S \ t%S \ n”,$ 0“**”; }打印出具有数量小于或等于30行,并在每一行的末尾添加一个(**)。 量的值使用$ 3字段变量访问。
  2. 第二个表达式{行动; }组合,$ 3> 30 {打印$ 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

在这个例子中,我们要以指明数量小于或等于线20,并在最后的字(TRUE)。

概要

这是一个入门教程比较运营商awk的 ,因此你需要尝试了许多其他选项,发现更多。

如果您遇到任何问题或您想到的任何添加,请在下面的评论部分中发表评论。 记住阅读Awk系列的下一部分,其中我将通过复合表达式带你。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏