在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 shell awk next,使用awk的next命令的方法相关推荐

  1. linux判断目录是否存在命令,linux shell 中判断文件、目录是否存在的方法

    本文主要介绍了linux shell 中判断文件.目录是否存在的方法,分享给大家 -e filename 如果 filename存在,则为真 -d filename 如果 filename为目录,则为 ...

  2. Linux Shell编程笔记7 awk的应用

    简介 awk是用于基本文本处理的工具.一般遇到复杂格式等的处理问题时,应该优先想到使用awk.比awk更加高端的,还有perl语言,它专门用于文本处理.python也有丰富的文字处理功能,但是这是它的 ...

  3. Linux Shell常用技巧(四) awk

    九.  awk实用功能: 和sed一样,awk也是逐行扫描文件的,从第一行到最后一行,寻找匹配特定模板的行,并在这些行上运行"选择"动作.如果一个模板没有指定动作,这些匹配的行就被 ...

  4. linux退出脚本命令,【Unix/Linux.Shell Script】退出状态,exit命令

    每一条命令,不管是内置,shell函数,还是外部的,当它退出时,都会返回一个小的整数值给引用它的程序,这是程序的退出状态. 在shell下执行程序时,有许多方式可以取出程序的退出状态. 退出状态值 以 ...

  5. Linux shell 学习笔记(6)— vim 编辑器使用方法及技巧

    1. 检查 vim 软件包 1.1 CentOS 发行版 $ alias vi alias vi='vim' $ $ which vim /usr/bin/vim $ $ ls -l /usr/bin ...

  6. linux shell 提示符消失 终端提示符显示-bash-4.1# 解决方法

    昨晚对服务器自带Python升级后,终端就不是以前root@主机+路径的显示方式了 如下图: 查了很多资料,有人说是root目录下.bash_profile和.bashrc两个文件缺失,但我的这两个文 ...

  7. linux强制踢出用户,Linux下管理员强行踢出用户的命令使用方法

    Linux强制踢出用户命令: 一.输入w命令查看已登录用户信息 [root@KW_S01_192.168.1.106_A ~]# w 19:22:31 up  2:11,  3 users,  loa ...

  8. Linux从入门到精通系列之sed命令使用方法

    今日目标 掌握sed的基本语法结构 熟悉sed常用的命令,如打印p,删除d,插入i等 一.文件编辑器知多少 Windows系统 SublimeNotepad++WordTypora Linux系统 v ...

  9. linux序列比对程序,Linux程序管理:top.htop.glances,dstat等命令使用方法

    什么是进程? 在Linux系统中:触发任何一个事件时,系统都会将它定义为一个进程,并且给予这个进程一个ID,称为PID,同时依据触发这个进程的用户与相关属性,给予这个PID一组有效的全乡设置.而程序就 ...

  10. linux shell 宏定义_Linux系统和Shell命令行简介,走上数据分析之路

    122Linux系统和Shell命令行简介,走上数据分析之路 本节作者:刘永鑫 中国科学院遗传与发育生物学研究所 版本1.0.2,更新日期:2020年8月31日 本项目永久地址:https://git ...

最新文章

  1. 【海洋女神原创】谈谈静默安装
  2. Java编程在线学习靠谱吗?能学会吗?
  3. kaggle notebook中免密码进行push
  4. PyTorch基础(part8)--LSTM
  5. 可变对象 不可变对象区别_对象应该是不可变的
  6. 数据结构-线性表之单链表
  7. RBAC权限模型库表设计
  8. netty应用场景_彻底搞懂 netty 线程模型
  9. ASP.NET Core轻松入门之Middleware管道模型
  10. matlab虚拟现实之V-Realm Builder2使用NavigationInfo精确定位、建模
  11. Avalon二数据填充
  12. CentOS7.9下实战安装MySQL5.7
  13. 数据结构 实验1——一元多项式的表示与相加
  14. 100套法律合同范本,赶快收藏以后签合同心里就有谱了
  15. 2017java编程大赛,电子信息系第一届java编程大赛实施方案
  16. CAD画虚线怎么调比例?CAD画虚线教程
  17. 使用chrome浏览器插件抢小米8
  18. 每个程序员必须掌握的常用英语词汇
  19. python工程师认证证书报考条件_Python工程师需要具备什么条件
  20. 基于SpringBoot2 + Redis + MySQL实现一个抢红包系统(至尊典藏版)

热门文章

  1. Ubuntu下 MySQL安装
  2. [转]bootstrap table 动态列数
  3. java的面向对象的四大特征
  4. heidiSQL使用简介
  5. EJS 模板中,js 如何获取后端传来的数据
  6. 音频监控叫好又叫座,核心部件拾音器怎么装?
  7. sqlserver2008中如何用右键可视化的设置外键
  8. Directx11教程(19) 画一个简单的地形
  9. 找不到网卡eth0的解决方法
  10. 数据结构——数据结构中的数据表示