当使用数字或字符串值一行文本,文本过滤或使用比较操作字符串的处理就派上用场了awk命令的用户。
在这部分awk的系列 ,我们将看看如何可以过滤文本或使用比较操作字符串。 如果你是一个程序员,那么你必须已经熟悉比较运算符,但那些不是,让我在下面的部分解释。
Awk中的比较运算符是什么?
Awk中的比较运算符用于比较数字或字符串的值,它们包括以下内容:
-
>
-大于 -
<
-小于 -
>=
-大于或等于 -
<=
-小于或等于 -
==
-等于 -
!=
-不等于 -
some_value ~ / pattern/
-如果SOME_VALUE匹配pattern -
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 **
在上面的例子中,有两个重要的事情发生:
- 第一个表达式{行动; }组合,则是$ <= 30 {printf的“%S \ t%S \ n”,$ 0“**”; }打印出具有数量小于或等于30行,并在每一行的末尾添加一个(**)。 量的值使用$ 3字段变量访问。
- 第二个表达式{行动; }组合,$ 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系列的下一部分,其中我将通过复合表达式带你。