next和getline
next语句从输入文件中读取下一行,然后从头开始执行awk脚本。如:
{if ($1 ~/test/){next} else {print} }
getline从整体上来说,应这么理解它的用法:
当其左右无重定向符 | 或 < 时,getline作用于当前文件,读入当前文件的下一行给其后跟的变量var或$0(无变量);应该注意到,由于awk在处理getline之前已经读入了一行,所以getline得到的返回结果是隔行的。
当其左右有重定向符 | 或 < 时,getline则作用于定向输入文件,由于该文件是刚打开,并没有被awk读入一行,只是getline读入,那么getline返回的是该文件的第一行,而不是隔行。
next和getline在awk执行过程中都用于读取下一行数据,但他们却有着很重要的不同。next读取下一行之后,把控制权交给了awk脚本的顶部,及next后面的语句将被忽略,重头执行那个awk的action,同时内置变量FNR等被重置。而getline却没有改变脚本的控制,读取下一行之后,继续运行当前的awk脚本,内置变量也不会被重置。getline执行之后,会覆盖$0的内容。
下面看看他们的具体用法和实际例子
next
$ cat file1
a 1
a 1
b 2
c 3
d 4
a 1
$ awk '{print $0;next}' file1
a 1
a 1
b 2
c 3
d 4
a 1
$ awk '{next;print $0}' file1
$ awk '{if($1~/a/)print $0;next} /b/{print $0}' file1
a 1
a 1
a 1
$ awk '{if($1~/a/)print $0;next;if($1~/b/);print $0} /b/{print $0}' file1
a 1
a 1
a 1
$ awk '{if($1~/a/)print $0;next;if($1~/b/) print $0} /b/{print $0}' file1
a 1
a 1
a 1
可以看到next后面的命令都没有执行,awk执行返回了命令顶部,读取下一行数据执行相应action
getline
$ awk '{getline;print $0,NR} ' file1
a 1 2
c 3 4
a 1 6
$ awk '{print $0,NR;getline} ' file1
a 1 1
b 2 3
d 4 5$ awk '{getline;print $0,NR;getline} ' file1
a 1 2
d 4 5
隔行处理数据
$ awk '{print $0,NR;getline} {print $0,NR}' file1
a 1 1
a 1 2
b 2 3
c 3 4
d 4 5
a 1 6
上里的操作顺序如下
'{print $0,NR}' file1------>getline------->{print $0,NR}------->'{print $0,NR}' file1
可以看到getline的操作是读取下一行数据到内存中
exit
在 awk中exit的执行有两种情况:当exit语句不在 END中时,任何操作中的exit命令表现得如同到了文件尾,所有模式或操作执行将停止,END模式中的操作被执行。而出现在END中的exit将导致程序终止。退出状态为0代表成功,非零值表示出错。
$ awk '{if ($2>3 && $2<5) exit;else print $0,NR}' file1
a 1 1
a 1 2
b 2 3
c 3 4
参考至:http://www.chinaunix.net/old_jh/24/691456.html
http://man.lupaworld.com/content/manage/ringkee/awk.htm
http://www.cnblogs.com/chengmo/archive/2010/10/04/1842073.html
http://www.51osos.com/a/Linux_CentOS_RedHat/Shellbiancheng/2010/1124/awk-getline.html
http://bbs.linuxpk.com/thread-43657-1-1.html
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com
相关推荐
VASP-poscar2lammps.awk
Linux系统中的awk命令是一个功能强大的文本处理工具,它可以对输入(通常是文件)进行模式扫描和处理。...通过学习和熟练运用awk命令,开发者能够有效地进行数据处理和自动化任务,大大提升工作效率。
5. **计算与逻辑操作**:awk支持数值计算和比较运算,可以进行条件判断和逻辑控制,实现复杂的处理逻辑。 **awk的执行方式** awk程序的执行有以下两种常见方式: 1. **命令行直接执行**:简单的小型awk程序可以...
11.2.3 Shell编程-字符截取命令-awk命令.mp4 11.2.4 Shell编程-字符截取命令-sed命令.mp4 11.3 Shell编程-字符处理命令.mp4 11.4 Shell编程-条件判断.mp4 11.5.1 Shell编程-流程控制-if语句.mp4 11.5.2 Shell...
awk基础入门(4) Unix系列shell程序编写(上) awk基础入门(5) Unix系列shell程序编写(下) Unix系列shell程序编写(中) shell游戏:俄罗斯方块 shell游戏:五子棋 shell游戏:老虎机 shell游戏:贪吃蛇 shell游戏:...
这个名为"AWK-file.rar_awk_awk tcl_delay awk_jitter awk _jitter ns-2"的压缩包文件显然是针对网络性能分析的,特别是使用AWK进行分析。下面将详细介绍涉及的知识点。 1. **AWK**: AWK是一种编程语言,由Aho、...
MOXA AWK-3121 配置方法及要点说明 MOXA AWK-3121 是一种工业级无线设备,具有 web 功能配置、IP 网络参数设置、工作模式选择、功率增强等特点。本文将详细介绍 MOXA AWK-3121 的配置方法及要点说明。 一、Web ...
本资源是 Shell 学习笔记的总结,涵盖了 Shell 的基本概念、类型、变量、进程、权限、管道、POSIX、grep、sed、awk 等命令和编程语言。 一、 Shell 的类型和特点 Shell 是一种命令行界面,提供了访问操作系统的...
在UDP协议方面,它是无连接的传输层协议,不提供确认、顺序保证或流量控制。因此,它适合对实时性要求高的应用,但可能会有数据丢失、重复或乱序的问题。CBR是一种模拟连续数据流的传输模式,常用于模拟音频或视频流...
Unix Shell 实例精解学习笔记 本文档主要介绍 Unix Shell 的基础知识,涵盖了 Shell 的定义、主要功能、常见 Shell 命令、正则表达式的基础知识和应用。 一、Unix Shell 定义 Shell 是一种特殊的程序,被用作用户...
开发者可以将其集成到自己的 Node.js 项目中,以利用 awk-like 功能,而无需依赖操作系统提供的 awk 命令。 awkj-master 可能是指这个工具的源代码仓库主分支。通常,开源项目会以这种方式命名,"master" 表示这是...
根据提供的文件信息,本文将总结其中的Linux运维学习笔记中提及的多个企业Shell面试题及其解决方案和知识点。 1. 批量生成随机字符文件名案例 该案例主要考察使用Shell脚本批量创建文件,并为每个文件赋予随机生成...
【Shell脚本入门学习】 Shell脚本是一种在Linux或Unix操作系统中进行自动化任务的强大工具,它基于Shell解释器,如/bin/sh。通过编写脚本,用户可以创建一系列命令,实现批量处理、文件管理、系统监控等功能。以下...
Shell学习笔记主要涵盖的是在Unix/Linux环境中使用Shell脚本来进行自动化任务处理和系统管理的知识。Shell作为操作系统与用户交互的接口,提供了强大的命令行工具和脚本编程能力,是IT行业中不可或缺的基础技能之一...
Linux运维-3.Shell编程-12 shell编程-131字符串处理之awk3.avi
Linux运维-3.Shell编程-12 shell编程-129字符串处理之awk1.avi
它们按照特定的顺序执行,可以读取、处理数据,并根据需要改变系统状态。 **四、SHELL基本知识** **4.1 特殊符号** SHELL中有很多特殊符号,如`$`用于引用变量,`#`用于注释,`&`表示后台执行,`|`用于管道,`>`和...