


Linux使用awk文本處理工具實(shí)現(xiàn)多行合并
添加時(shí)間:2016-2-13 21:05:34
添加:
思海網(wǎng)絡(luò)
在Linux系統(tǒng)中使用awk文本處理工具,有時(shí)需要將多行合并,這就需要用到awknext語句了,下面小編就給大家介紹下Linux中使用awk實(shí)現(xiàn)多行合并的方法,需要的朋友可以來了解下。
awknext語句使用:在循環(huán)逐行匹配,如果遇到next,就會(huì)跳過當(dāng)前行,直接忽略下面語句。而進(jìn)行下一行匹配。
代碼如下:
text.txt 內(nèi)容是:
a
b
c
d
e
。踓hengmo@centos5 shell]$ awk ‘NR%2==1{next}{print NR,$0;}’ text.txt
2 b
4 d
當(dāng)記錄行號(hào)除以2余 1,就跳過當(dāng)前行。下面的print NR,$0也不會(huì)執(zhí)行。 下一行開始,程序有開始判斷NR%2 值。這個(gè)時(shí)候記錄行號(hào)是:2 ,就會(huì)執(zhí)行下面語句塊:‘print NR,$0’
awk next使用實(shí)例:
代碼如下:
要求:
文件: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
分析:
分析發(fā)現(xiàn)需要將包含有“web”行進(jìn)行跳過,然后需要將內(nèi)容與下面行合并為一行。
[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進(jìn)行多行合并的方法介紹了,在文中使用next語句是十分方便的,在循環(huán)匹配中,如果遇到next,就會(huì)自動(dòng)跳過,從而實(shí)現(xiàn)多行合并。
關(guān)鍵字:Linux、awk、文本處理
新文章:
- CentOS7下圖形配置網(wǎng)絡(luò)的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS單網(wǎng)卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗(yàn)證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網(wǎng)打印機(jī)IP講解
- CentOS7使用hostapd實(shí)現(xiàn)無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網(wǎng)絡(luò)重啟出錯(cuò)
- 解決Centos7雙系統(tǒng)后丟失windows啟動(dòng)項(xiàng)
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統(tǒng)有什么不同呢
- Centos 6.6默認(rèn)iptable規(guī)則詳解