1. 程式人生 > 其它 >linux中awk命令中的next的用法

linux中awk命令中的next的用法

 

1、linux中awk中next命令相當於迴圈語句中的continue

[root@centos7 test2]# seq 6
1
2
3
4
5
6
[root@centos7 test2]# seq 6 | awk '$0 ~ /5/ {next}; {print $0}'  ## 當前行匹配5的時候,跳過本次迴圈
1
2
3
4
6

 

2、測試資料

[root@centos7 test2]# ls
a.txt
[root@centos7 test2]# cat a.txt
web01[192.168.2.100]
httpd ok
tomcat ok
sendmail ok
web02[192.168
.2.101] httpd ok postfix ok web03[192.168.2.102] mysqld ok httpd ok

 

if實現資料摺疊:

[root@centos7 test2]# ls
a.txt
[root@centos7 test2]# cat a.txt
web01[192.168.2.100]
httpd ok
tomcat ok
sendmail ok
web02[192.168.2.101]
httpd ok
postfix ok
web03[192.168.2.102]
mysqld ok
httpd ok
[root@centos7 test2]# awk '{if($0 ~ /^web/){title = $0} else {print title, $0}}
' a.txt web01[192.168.2.100] httpd ok web01[192.168.2.100] tomcat ok web01[192.168.2.100] sendmail ok web02[192.168.2.101] httpd ok web02[192.168.2.101] postfix ok web03[192.168.2.102] mysqld ok web03[192.168.2.102] httpd ok ## next的作用是跳過本次迭代 [root@centos7 test2]# awk '{if($0 ~ /^web/) {title = $0; next
}{print title, $0}}
' a.txt web01[192.168.2.100] httpd ok web01[192.168.2.100] tomcat ok web01[192.168.2.100] sendmail ok web02[192.168.2.101] httpd ok web02[192.168.2.101] postfix ok web03[192.168.2.102] mysqld ok web03[192.168.2.102] httpd ok