免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1930 | 回复: 4

用sed如何能将文件进行如下转换 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-07-05 22:20:00
发表于 2009-11-22 21:06 |显示全部楼层
在linux下用iostat -xdk 1 2生成一个文件,内容如下:
Linux 2.4.20-19.7smp (test2)         11/22/09

Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
cciss/c1d0      201.75    68.08 77.12  9.19  1078.18   308.86    32.14     0.12    1.38   0.31   2.68
cciss/c1d0p1
              26.80    62.06  2.00  2.62   115.22   258.72   161.71     0.12   25.66   8.21   3.80
cciss/c1d0p2
             174.94     6.02 75.12  6.56   962.96    50.13    24.81     0.00    1.50   1.39  11.34
cciss/c0d0        3.98    11.67  7.38  9.03    44.91    80.80    15.32     0.10    6.05   7.29  11.97
cciss/c0d0p1
               0.00     0.00  0.00  0.00     0.00     0.00     9.39     0.00    4.91   4.36   0.00
cciss/c0d0p5
               0.18     0.81  0.35  0.36     2.09     4.64    18.87     0.00    3.34   1.77   0.13
cciss/c0d0p6
               0.21     2.23  0.20  3.70     1.55    23.76    13.00     0.01    3.39   0.71   0.28
cciss/c0d0p7
               0.37     2.22  0.61  1.17     3.73    13.72    19.66     0.01    4.32   1.82   0.32
cciss/c0d0p8
               0.00     4.28  4.42  2.66    17.68    27.73    12.84     0.05    6.88  14.08   9.97
cciss/c0d0p9
               0.13     1.32  0.24  0.63     1.50     7.87    21.37     0.00    2.77   1.08   0.09
cciss/c0d0p10
               0.08     0.70  0.01  0.05     0.09     0.76    25.91     0.00    5.41   1.23   0.01
cciss/c0d0p11
               3.02     0.11  1.55  0.46    18.27     2.32    20.46     0.02   12.23   7.44   1.50

Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
cciss/c1d0       32.07    58.33 13.80  9.63   183.60   272.53    38.93     0.72   30.68  14.20  33.27
cciss/c1d0p1      
               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
cciss/c1d0p2   
               32.07    58.33 13.80  9.63   183.60   272.53    38.93     0.72   30.68  14.20  33.27
cciss/c0d0        1.53    11.30  2.10 21.77    14.13   132.07    12.25     0.42   17.49   7.71  18.40
cciss/c0d0p1
               0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
cciss/c0d0p5
               0.00     1.73  0.03  3.00     0.13    19.07    12.66     0.03    8.68   0.77   0.23
cciss/c0d0p6
               0.00     1.77  0.00  3.40     0.00    21.47    12.63     0.02    6.37   0.59   0.20
cciss/c0d0p7
               0.00     1.40  0.07  3.00     0.27    17.60    11.65     0.01    4.89   0.76   0.23
cciss/c0d0p8
               0.00     0.00  0.63  1.10     2.53     4.40     8.00     0.28  163.08  93.65  16.23
cciss/c0d0p9
               0.00     5.07  0.17  4.40     0.67    38.67    17.23     0.01    2.92   0.58   0.27
cciss/c0d0p10
               0.00     0.33  0.13  0.40     0.13     0.73     3.25     0.00    1.88   1.88   0.10
cciss/c0d0p11
               1.53     1.00  1.07  6.47    10.40    30.13    10.76     0.06    7.61   3.19   2.40


---------------------------------------------------
需要将该文件变成如下:
Linux 2.4.20-19.7smp (lishalx2)         11/19/09

Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
cciss/c1d0      201.75    68.08 77.12  9.19  1078.18   308.86    32.14     0.12    1.38   0.31   2.68
cciss/c1d0p1     26.80    62.06  2.00  2.62   115.22   258.72   161.71     0.12   25.66   8.21   3.80
cciss/c1d0p2    174.94     6.02 75.12  6.56   962.96    50.13    24.81     0.00    1.50   1.39  11.34
cciss/c0d0        3.98    11.67  7.38  9.03    44.91    80.80    15.32     0.10    6.05   7.29  11.97
cciss/c0d0p1      0.00     0.00  0.00  0.00     0.00     0.00     9.39     0.00    4.91   4.36   0.00
cciss/c0d0p5      0.18     0.81  0.35  0.36     2.09     4.64    18.87     0.00    3.34   1.77   0.13
cciss/c0d0p6      0.21     2.23  0.20  3.70     1.55    23.76    13.00     0.01    3.39   0.71   0.28
cciss/c0d0p7      0.37     2.22  0.61  1.17     3.73    13.72    19.66     0.01    4.32   1.82   0.32
cciss/c0d0p8      0.00     4.28  4.42  2.66    17.68    27.73    12.84     0.05    6.88  14.08   9.97
cciss/c0d0p9      0.13     1.32  0.24  0.63     1.50     7.87    21.37     0.00    2.77   1.08   0.09
cciss/c0d0p10     0.08     0.70  0.01  0.05     0.09     0.76    25.91     0.00    5.41   1.23   0.01
cciss/c0d0p11     3.02     0.11  1.55  0.46    18.27     2.32    20.46     0.02   12.23   7.44   1.50

Device:         rrqm/s   wrqm/s   r/s   w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
cciss/c1d0       32.07    58.33 13.80  9.63   183.60   272.53    38.93     0.72   30.68  14.20  33.27
cciss/c1d0p1      0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
cciss/c1d0p2     32.07    58.33 13.80  9.63   183.60   272.53    38.93     0.72   30.68  14.20  33.27
cciss/c0d0        1.53    11.30  2.10 21.77    14.13   132.07    12.25     0.42   17.49   7.71  18.40
cciss/c0d0p1      0.00     0.00  0.00  0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
cciss/c0d0p5      0.00     1.73  0.03  3.00     0.13    19.07    12.66     0.03    8.68   0.77   0.23
cciss/c0d0p6      0.00     1.77  0.00  3.40     0.00    21.47    12.63     0.02    6.37   0.59   0.20
cciss/c0d0p7      0.00     1.40  0.07  3.00     0.27    17.60    11.65     0.01    4.89   0.76   0.23
cciss/c0d0p8      0.00     0.00  0.63  1.10     2.53     4.40     8.00     0.28  163.08  93.65  16.23
cciss/c0d0p9      0.00     5.07  0.17  4.40     0.67    38.67    17.23     0.01    2.92   0.58   0.27
cciss/c0d0p10     0.00     0.33  0.13  0.40     0.13     0.73     3.25     0.00    1.88   1.88   0.10
cciss/c0d0p11     1.53     1.00  1.07  6.47    10.40    30.13    10.76     0.06    7.61   3.19   2.40

这个转换用sed如何实现,谢谢!

论坛徽章:
0
发表于 2009-11-22 21:21 |显示全部楼层
sed  '/^[a-z]*\/[a-z0-9]*$/{N;s/\n */ /}' urfile

论坛徽章:
0
发表于 2009-11-22 21:24 |显示全部楼层
sed '/c[0-1]d0p[1-9]/{N;s/\n//}' data |sed 's/ \{1,\}/\t/g'

[ 本帖最后由 sunbw001 于 2009-11-22 21:26 编辑 ]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-07-05 22:20:00
发表于 2009-11-22 21:47 |显示全部楼层
2楼的好像不行,试过了,只转换了最后2行
cciss/c0d0p10 0.00     0.33  0.13  0.40     0.13     0.73     3.25     0.00    1.88   1.88   0.10
cciss/c0d0p11 1.53     1.00  1.07  6.47    10.40    30.13    10.76     0.06    7.61   3.19   2.40

3楼的可以的,非常感谢。我再好好看看sed,这个语句是什么意思。

[ 本帖最后由 yjs_sh 于 2009-11-22 21:55 编辑 ]

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
发表于 2009-11-22 23:09 |显示全部楼层

回复 #4 yjs_sh 的帖子

对于匹配c[0-1]d0p[1-9]的行,把它的下一行追加到模式空间,删除换行,相当于把两行合并了。
/ \{1,\}/\t/表示把一个或多个空格替换成制表符。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP