Linux使用awk文本处理工具实现多行合并的实例awk多行合并一行




Linux使用awk文本处理工具实现多行合并的实例awk多行合并一行

2022-07-20 20:28:38 网络知识 官方管理员

  在Linux系统中使用awk文本处理工具,有时需要将多行合并,这就需要用到awknext语句了,下面小编就给大家介绍下Linux中使用awk实现多行合并的方法,需要的朋友可以来了解下。

  awknext语句使用:在循环逐行匹配,如果遇到next,就会跳过当前行,直接忽略下面语句。而进行下一行匹配。

  代码如下:

  text.txt内容是:

  a

  b

  c

  d

  e

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

  2b

  4d

  当记录行号除以2余1,就跳过当前行。下面的printNR,$0也不会执行。下一行开始,程序有开始判断NR%2值。这个时候记录行号是:2,就会执行下面语句块:‘printNR,$0’

  awknext使用实例

  代码如下:

  要求:

  文件:text.txt格式:

  web01[192.168.2.100]

  httpdok

  tomcatok

  sendmailok

  web02[192.168.2.101]

  httpdok

  postfixok

  web03[192.168.2.102]

  mysqldok

  httpdok

  需要通过awk将输出格式变成:

  web01[192.168.2.100]:httpdok

  web01[192.168.2.100]:tomcatok

  web01[192.168.2.100]:sendmailok

  web02[192.168.2.101]:httpdok

  web02[192.168.2.101]:postfixok

  web03[192.168.2.102]:mysqldok

  web03[192.168.2.102]:httpdok

  分析:

  分析发现需要将包含有web行进行跳过,然后需要将内容与下面行合并为一行。

  [chengmo@centos5shell]$awk‘/^web/{T=$0;next;}{printT:\t$0;}’test.txt

  web01[192.168.2.100]:httpdok

  web01[192.168.2.100]:tomcatok

  web01[192.168.2.100]:sendmailok

  web02[192.168.2.101]:httpdok

  web02[192.168.2.101]:postfixok

  web03[192.168.2.102]:mysqldok

  web03[192.168.2.102]:httpdok

  上面就是Linux使用awk进行多行合并的方法介绍了,在文中使用next语句是十分方便的,在循环匹配中,如果遇到next,就会自动跳过,从而实现多行合并。


发表评论:

最近发表
网站分类
标签列表