Linux怎么使用awk文本处理工具实现多行合并
系統(tǒng)運維
這篇文章主要介紹“Linux怎么使用awk文本處理工具實現(xiàn)多行合并”,在日常操作中,相信很多人在Linux怎么使用awk文本處理工具實現(xiàn)多行合并問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Linux怎么使用awk文本處理工具實現(xiàn)多行合并”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
在Linux系統(tǒng)中使用awk文本處理工具,有時需要將多行合并,這就需要用到awknext語句了,下面小編就給大家介紹下Linux中使用awk實現(xiàn)多行合并的方法,需要的朋友可以來了解下。
awknext語句使用:在循環(huán)逐行匹配,如果遇到next,就會跳過當(dāng)前行,直接忽略下面語句。而進行下一行匹配。
代碼如下:
text.txt 內(nèi)容是:
a
b
c
d
e
[chengmo@centos5 shell]$ awk ‘NR%2==1{next}{print NR,$0;}’ text.txt
2 b
4 d
當(dāng)記錄行號除以2余 1,就跳過當(dāng)前行。下面的print NR,$0也不會執(zhí)行。 下一行開始,程序有開始判斷NR%2 值。這個時候記錄行號是:2 ,就會執(zhí)行下面語句塊:‘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
分析:
分析發(fā)現(xiàn)需要將包含有“web”行進行跳過,然后需要將內(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
到此,關(guān)于“Linux怎么使用awk文本處理工具實現(xiàn)多行合并”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!
總結(jié)
以上是生活随笔為你收集整理的Linux怎么使用awk文本处理工具实现多行合并的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu中配置Mysql编码的具体过
- 下一篇: ubuntu14.04.1怎么配置apa