对于使用awk命令的用户来说,处理一行文本中的数字或者字符串时,使用比较运算符来过滤文本和字符串是十分方便的。下面的部分我们介绍"awk"的比较运算符。
awk中的比较运算符是什么?
awk中的比较运算符用于比较字符串和或者数值,包括以下类型:
符号作用
>大于
<小于
>=大于等于
<=小于等于
==等于
!=不等于
some_value~/pattern/如果some_value匹配模式pattern,则返回true
some_value!~/pattern/如果some_value不匹配模式pattern,则返回true现在我们通过例子来熟悉awk中各种不同的比较运算符。
例子一,我们有一个文件名为food_list.txt的文件,里面包括不同食物的购买列表。我想给食物数量小于或等于30的物品所在行的后面加上(**)
File–food_list.txt
NoItem_NameQuantityPrice
1Mangoes45$3.45
2Apples25$2.45
3Pineapples5$4.45
4Tomatoes25$3.45
5Onions15$1.45
6Bananas30$3.45
Awk中使用比较运算符的通用语法如下:
#表达式{动作;}
为了实现刚才的目的,执行下面的命令:
#awk'$3<=30{printf"%s/t%s/n",$0,"**";}$3>30{print$0;}'food_list.txt
NoItem_Name`QuantityPrice
1Mangoes45$3.45
2Apples25$2.45**
3Pineapples5$4.45**
4Tomatoes25$3.45**
5Onions15$1.45**
6Bananas30$3.45**
在刚才的例子中,发生如下两件重要的事情:
第一个表达式{动作;}组合中,$3<=30{printf%s/t%s/n,$0,**;}打印出数量小于等于30的行,并且在后面增加(**)。物品的数量是通过$3这个域变量获得的。第二个表达式{动作;}组合中,$3>30{print$0;}原样输出数量小于等于30的行。
再举一个例子:
#awk'$3<=20{printf"%s/t%s/n",$0,"TRUE";}$3>20{print$0;}'food_list.txt
NoItem_NameQuantityPrice
1Mangoes45$3.45
2Apples25$2.45
3Pineapples5$4.45TRUE
4Tomatoes25$3.45
5Onions15$1.45TRUE
6Bananas30$3.45
在这个例子中,我们想通过在行的末尾增加(TRUE)来标记数量小于等于20的行。
总结
这是一篇对awk中的比较运算符介绍性的指引,因此你需要尝试其他选项,发现更多使用方法。