Linux使用awk实现多行合并的实例

木子酸酸

木子酸酸

2016-02-19 11:28

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐Linux使用awk实现多行合并的实例,无聊中的都看过来。

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

 Linux使用awk实现多行合并的实例

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

代码如下:

text.txt 内容是:

a

b

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/diannaorumen/)

c

d

e

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

2 b

4 d

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/diannaorumen/)

当记录行号除以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,就会自动跳过,从而实现多行合并。

展开更多 50%)
分享

猜你喜欢

Linux使用awk实现多行合并的实例

电脑入门
Linux使用awk实现多行合并的实例

Linux如何使用awk进行数组排序

电脑入门
Linux如何使用awk进行数组排序

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Linux如何使用文本处理工具awk

电脑入门
Linux如何使用文本处理工具awk

Linux使用watch命令的实例

电脑入门
Linux使用watch命令的实例

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

SQL 合并多行记录的方法总汇

编程语言 网络编程
SQL 合并多行记录的方法总汇

Linux crontab命令使用实例汇总

电脑入门
Linux crontab命令使用实例汇总

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Win10默认开启数字小键盘的方法

Win10默认开启数字小键盘的方法

Ajax 的六个误区小结分析

Ajax 的六个误区小结分析
下拉加载更多内容 ↓