awk next以及getline用法示例

Posted zhangray

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk next以及getline用法示例相关的知识,希望对你有一定的参考价值。

在awk中,如果调用next,那么next之后的命令就都不执行了。此行文本的处理到此结束,开始读取下一条记录并操作。

实例如下:

[email protected]:~$ cat data 
1000
naughty 500
cc 400
zoer 100
[email protected]:~$ awk {if(NR==1){next} print $1,$2} data 
naughty 500
cc 400

比如说我们有一个data文件,存放了每个人的出差费用。想要打印出来。但是第一行总费用不要打印。那么使用awk的next忽略掉第一行即可。

-------------------------------------------------------------

与next相似,getline也是读取下一行数据。但是与next不同的是,next读取下一行之后,把控制权交给了awk脚本的顶部。但是getline却没有改变脚本的控制,读取下一行之后,继续运行当前的awk脚本。getline执行之后,会覆盖$0的内容。

例子如下:

[email protected]:~$ cat data 
name naughty
25 shandong
age 14
hah,here is test
[email protected]:~$ cat d
$1=="name"{print $0;getline;print $0;}
$1=="age"{print $0}
[email protected]:~$ awk -f d data 
name naughty

例子中,如果遇到行首是name的,就把下一行读取出来并打印。如果行首是age,就仅仅打印本行。

从运行结果也可以看出来,hah,here is test并没有打印出来。因为它没有匹配name或者age开头。

getline #读取数据文件中的行数据,

[email protected]:~# curl -s  http://127.0.0.1/nginx_status
Active connections: 21228
server accepts handled requests
 302148405 302148405 375670777
Reading: 0 Writing: 50 Waiting: 21137
[email protected]:~# curl -s  http://127.0.0.1/nginx_status|awk ‘/server accepts handled requests/{getline;print $0}‘
 302149409 302149409 375672098

#这样就可以取出对应的数据了。

以上是关于awk next以及getline用法示例的主要内容,如果未能解决你的问题,请参考以下文章

三剑客之awk的用法

awk从入门到入土(11)awk getline函数详解

精通awk系列:awk用法入门

自动化运维必须要学的Shell文本处理三剑客之——awk用法(超多案例详细介绍)

文本三剑客之awk进阶篇

Linux 里面awk begin作用是啥?