Chinaunix

标题: 一行怎么拆分成多行 [打印本页]

作者: 搁浅的思恋    时间: 2013-01-07 17:02
标题: 一行怎么拆分成多行
有一个文本文件容易是这样的,主要记录的是网卡流量信息的;
172.16.0.202 eth1 128 0 eth2 0 0 eth3 0 0 eth4 1743 303 eth5 311 0 ……
我想把这个文本转换成这样
172.16.0.202 eth1 128 0
172.16.0.202 eth2 0 0
172.16.0.202 eth3 0 0
172.16.0.202 eth4 1743 303
172.16.0.202 eth5 311 0
......
.....

我自己想了个办法用eth做为分隔符将文本拆分起来,但是不知道怎么把IP地址带到每一行;请大神指点
  1. awk 'BEGIN{RS="eth";OFS=","}NF=NF' file
复制代码
我运行的结果
172.16.0.202
1,128,0
2,0,0
3,0,0
4,1743,303
5,311,0
作者: yestreenstars    时间: 2013-01-07 17:09
  1. awk '{for(i=2;i<=NF;i+=3)print $1,$i,$(i+1),$(i+2)}'
复制代码

作者: z421941982    时间: 2013-01-07 18:48
回复 2# yestreenstars


    膜拜大神....
作者: reyleon    时间: 2013-01-07 18:51
本帖最后由 reyleon 于 2013-01-07 18:53 编辑
  1. awk 'BEGIN{RS="eth";OFS=""}NR==1{ip=$0}NR>1{print ip,RS,$0}' urfile
复制代码

作者: davidbeckham921    时间: 2013-01-07 18:57
学习了,都是很好的办法。
作者: zooyo    时间: 2013-01-07 19:08
提示: 作者被禁止或删除 内容自动屏蔽
作者: loglm    时间: 2013-01-07 22:43
新手学习中,先读贴。谢谢
作者: ljwd1000    时间: 2013-01-08 10:31
  1. awk 'BEGIN{FS=OFS="eth"}{for(i=2;i<=NF;i++)print $1,$i}'
复制代码

作者: seesea2517    时间: 2013-01-08 11:15
回复 6# zooyo


    这是篡位的前兆。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2