1. 程式人生 > >awk next以及getline用法示例

awk next以及getline用法示例

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用法示例