awk 作為文本處理利器,next 語句能跳過當前行直接進入下一輪匹配,配合變量暫存實現多行合併。本文通過實戰案例詳解 next 核心用法與多行合併技巧。
awk 'condition { next } { action }' file
當 condition 滿足時,跳過後續 action,直接讀取下一行重新評估條件。
# 文件內容:a b c d e(每行一字母)
awk 'NR%2==1 { next } { print NR, $0 }' text.txt
# 輸出:
2 b
4 d
奇數行觸發 next 跳過打印,偶數行執行打印動作。
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
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
awk '/^web/ { T=$0; next } { print T ": \t" $0 }' test.txt
/^web/ 匹配以 web 開頭的行(主機行){ T=$0; next } 將整行存入變量 T,next 跳過打印,進入下一行{ print T ": \t" $0 } 非主機行執行:輸出暫存的主機名 + 當前行服務狀態awk 'ORS=NR%3?",":"\n"' file
awk '{ getline line < "file2"; print $0, line }' file1
next 僅影響當前文件處理流程,getline 可跨文件讀取T 未初始化時為空字符串,首行非匹配行會輸出前綴冒號awk -v var=value 傳遞參數避免 Shell 展開問題靈活運用 next 控制流程,讓 awk 處理複雜多行文本輕鬆自如。