awk next以及getline用法示例
阿新 • • 發佈:2018-07-29
waiting div line hand 使用 ubuntu 控制 內容 例如
在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
例子中,如果遇到行首是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
#這樣就可以取出對應的數據了。
awk next以及getline用法示例