歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux維護 >> Linux使用awk實現多行合並的實例

Linux使用awk實現多行合並的實例

日期:2017/3/2 10:31:32   编辑:Linux維護

在Linux系統中使用awk文本處理工具,有時需要將多行合並,這就需要用到awknext語句了,下面小編就給大家介紹下Linux中使用awk實現多行合並的方法,需要的朋友可以來了解下。

awknext語句使用:在循環逐行匹配,如果遇到next,就會跳過當前行,直接忽略下面語句。而進行下一行匹配。

代碼如下:

text.txt 內容是:

a

b

c

d

e

[chengmo@centos5 shell]$ awk ‘NR%2==1{next}{print NR,$0;}’ text.txt

2 b

4 d

當記錄行號除以2余 1,就跳過當前行。下面的print NR,$0也不會執行。 下一行開始,程序有開始判斷NR%2 值。這個時候記錄行號是:2 ,就會執行下面語句塊:‘print NR,$0’

awk next使用實例:

代碼如下:

要求:

文件:text.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

需要通過awk將輸出格式變成:

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

分析:

分析發現需要將包含有“web”行進行跳過,然後需要將內容與下面行合並為一行。

[chengmo@centos5 shell]$ awk ‘/^web/{T=$0;next;}{print T“:\t”$0;}’ test.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

上面就是Linux使用awk進行多行合並的方法介紹了,在文中使用next語句是十分方便的,在循環匹配中,如果遇到next,就會自動跳過,從而實現多行合並。

Copyright © Linux教程網 All Rights Reserved