zoukankan      html  css  js  c++  java
  • awk next以及getline用法示例

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

    实例如下:

    zoer@ubuntu:~$ cat data 
    1000
    naughty 500
    cc 400
    zoer 100
    zoer@ubuntu:~$ 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的内容。

    例子如下:

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

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

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

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

    root@:~# 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
    root@:~# curl -s  http://127.0.0.1/nginx_status|awk '/server accepts handled requests/{getline;print $0}'
     302149409 302149409 375672098

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

  • 相关阅读:
    关闭webstorm自动保存,并显示文件未保存标识
    ionic1.3.3 下拉刷新 上拉加载更多
    纯css导航下划线跟随效果【转载】
    wpf获取模板化控件中的动画。
    wpf中dropdownButton控件下拉居中。。。
    C#综合揭秘——深入分析委托与事件
    反射
    多线程,异步
    wcf,socket,数据传输方式
    面向对象五大原则三个基本特征
  • 原文地址:https://www.cnblogs.com/zhangray/p/9385037.html
Copyright © 2011-2022 走看看