在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
#这样就可以取出对应的数据了。
原文地址:https://www.cnblogs.com/zhangray/p/9385037.html
时间: 2024-11-13 01:01:49