使用awk的next命令的方法
在awk系列文章中,我们来看一下next 命令 ,它告诉 awk 跳过你所提供的所有剩下的模式和表达式,直接处理下一个输入行。next 命令帮助你阻止运行命令执行过程中多余的步骤。
要明白它是如何工作的, 让我们来分析一下 food_list.txt 它看起来像这样:
Food List Items No Item_Name Price Quantity 1 Mangoes $3.45 5 2 Apples $2.45 25 3 Pineapples $4.45 55 4 Tomatoes $3.45 25 5 Onions $1.45 15 6 Bananas $3.45 30 >
运行下面的命令,它将在每个食物数量小于或者等于 20 的行后面标一个星号:
# awk '$4 <= 20 { printf "%s/t%s/n", $0,"*" ; } $4 > 20 { print $0 ;} ' food_list.txt No Item_Name Price Quantity 1 Mangoes $3.45 5 * 2 Apples $2.45 25 3 Pineapples $4.45 55 4 Tomatoes $3.45 25 5 Onions $1.45 15 * 6 Bananas $3.45 30
上面的命令实际运行如下:
1.它用$4 <= 20表达式检查每个输入行的第四列(数量(Quantity))是否小于或者等于 20,如果满足条件,它将在末尾打一个星号 (*)。
2.它用$4 > 20表达式检查每个输入行的第四列是否大于20,如果满足条件,显示出来。
但是这里有一个问题, 当第一个表达式用{ printf "%s/t%s/n", $0,"**" ; }命令进行标注的时候在同样的步骤第二个表达式也进行了判断这样就浪费了时间。因此当我们已经用第一个表达式打印标志行的时候就不再需要用第二个表达式$4 > 20再次打印。
要处理这个问题, 我们需要用到next 命令:
# awk '$4 <= 20 { printf "%s/t%s/n", $0,"*" ; next; } $4 > 20 { print $0 ;} ' food_list.txt
当输入行用$4 <= 20 { printf "%s/t%s/n", $0,"*" ; next ; }命令打印以后,next命令将跳过第二个$4 > 20 { print $0 ;}表达式,继续判断下一个输入行,而不是浪费时间继续判断一下是不是当前输入行还大于 20。
next命令在编写高效的命令脚本时候是非常重要的,它可以提高脚本速度。
相关文章
总结Linux中用于文本处理的awk、sed、grep命令用法
这篇文章主要介绍了Linux中用于文本处理的awk、sed、grep命令用法总结,是Linux入门学习中的基础知识,需要的朋友可以参考下2016-03-21- 这篇文章主要介绍了Linux下的AWK入门教程,AWK工具甚至能够自编程实现功能,是非常强大的文本分析工具,需要的朋友可以参考下2015-08-11
- 这篇文章主要介绍了Linux命令之awk命令使用介绍,本文只是简单的讲解了sed的语法以及使用实例,需要的朋友可以参考下2016-06-05
- 这篇文章主要介绍了awk命令实现求和、求平均值、求最大值、求最小值,本文直接给出操作命令,需要的朋友可以参考下2015-02-09
- awk是款文本处理工具,提供多种功能,那么如何使用awk进行数组排序呢?下面小编就给大家详细介绍下Linux中如何使用awk进行数组排序2015-01-20
- 在Linux系统中使用awk文本处理工具,有时需要将多行合并,这就需要用到awknext语句了,下面有个不错的示例,需要的朋友可以看看2015-01-20
Awk 命令学习总结、AWk命令系列学习(linux shell学习必备)
学习linux 的同人,都知道linux shell文本处理能力非常强大2013-11-19- 由于awk数组,是关联数组。for…in循环输出时候,默认打印出来是无序数组2013-11-19
- 处理文本,是awk的强项了。 无论性能已经速度都是让人惊叹,这里简单介绍下2013-11-19
- 我们经常会将2个有关联文本文件进行合并处理。分别从不同文件获取需要的列,然后,整体输出到一起。awk进行多文件处理时候,常常会遇到2个方面问题,第一个是怎么样合并多2013-11-19
最新评论