免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1924 | 回复: 4
打印 上一主题 下一主题

请教这么一个数据库输出文件如何提取出各字段的值? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-18 15:42 |只看该作者 |倒序浏览
因为要统计每个数据库的空间情况,请教如何能把每个字段的值提取成变量呢?
请教诸位指点

文件内容如下:

database_name                  database_size
------------------------------ -------------
DIRWAYSDB                      5143.0 MB
reserved        data            index_size      unused
--------------- --------------- --------------- ---------------
10766 KB        6900 KB         556 KB          3310 KB
(return status = 0)
database_name                  database_size
------------------------------ -------------
DISWAYSDB                      1547.0 MB
reserved        data            index_size      unused
--------------- --------------- --------------- ---------------
4156 KB         1236 KB         300 KB          2620 KB
(return status = 0)
database_name                  database_size
------------------------------ -------------
MBFEHISDB                      2700.0 MB
reserved        data            index_size      unused
--------------- --------------- --------------- ---------------
18898 KB        5304 KB         10458 KB        3136 KB
(return status = 0)

论坛徽章:
0
2 [报告]
发表于 2007-01-18 16:27 |只看该作者
用awk来分割好象怎么都不行呢,用空格不行把 return分开了,用tab也不行--- ---之间的好象是空格不是tab

论坛徽章:
0
3 [报告]
发表于 2007-01-18 16:45 |只看该作者
虽然比较粗鲁...呵呵...ORACLE数据库嘛吧...试试这个吧
urfile就是你的文件...随便改下就成sh脚本了...我只是玩玩...

  1. grep -v '^-' urfile | awk 'BEGIN{RS="[(][^)]*[)][\n]";FS="[ ][ ]+|[\n]";} {
  2. printf("%s=%s\n", $1, $3);
  3. printf("%s=%s\n", $2, $4);
  4. printf("%s=%s\n", $5, $9);
  5. printf("%s=%s\n", $6, $10);
  6. printf("%s=%s\n", $7, $11);
  7. printf("%s=%s\n", $8, $12);
  8. printf("-----\n");
  9. }'
复制代码


结果, 这样子应该很简单了...

  1. database_name=DIRWAYSDB
  2. database_size=5143.0 MB
  3. reserved=10766 KB
  4. data=6900 KB
  5. index_size=556 KB
  6. unused=3310 KB
  7. -----
  8. database_name=DISWAYSDB
  9. database_size=1547.0 MB
  10. reserved=4156 KB
  11. data=1236 KB
  12. index_size=300 KB
  13. unused=2620 KB
  14. -----
  15. database_name=MBFEHISDB
  16. database_size=2700.0 MB
  17. reserved=18898 KB
  18. data=5304 KB
  19. index_size=10458 KB
  20. unused=3136 KB
  21. -----
复制代码

[ 本帖最后由 Edengundam 于 2007-1-18 16:47 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-01-18 16:55 |只看该作者
先设置一下输出格式,处理起来会容易很多。。

lin <行宽>
col <列名> format a<列宽>
select ...

论坛徽章:
0
5 [报告]
发表于 2007-01-18 18:12 |只看该作者
如果文件是如下的形式,就好解决了。

  1. database_name         database_size        reserved        data            index_size      unused
  2. ----------------------------------        --------------- --------------- --------------- ---------------
  3. DIRWAYSDB             5143.0 MB        10766 KB        6900 KB         556 KB          3310 KB
  4. (return status = 0)
  5. database_name         database_size        reserved        data            index_size      unused
  6. ----------------------------------        --------------- --------------- --------------- ---------------
  7. DISWAYSDB             1547.0 MB        4156 KB         1236 KB         300 KB          2620 KB
  8. (return status = 0)
  9. database_name         database_size        reserved        data            index_size      unused
  10. ----------------------------------        --------------- --------------- --------------- ---------------
  11. MBFEHISDB             2700.0 MB                18898 KB       5304 KB       10458 KB       3136 KB
  12. (return status = 0)

复制代码



  1. awk '$0~/database_name/{
  2.         getline;
  3.         getline;
  4.         print $0;
  5. }' src;
复制代码

[ 本帖最后由 hebioldman 于 2007-1-18 18:13 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP