免费注册 查看新帖 |

Chinaunix

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

[文本处理] shell 替换两分隔符里的内容 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-10-29 15:08 |只看该作者 |倒序浏览
本帖最后由 路人呵呵 于 2013-10-31 15:26 编辑

写了个备份脚本每天运行,运行完后能够把备份信息写入到一个html然后上传ftp.
但是不知道如何替换掉表格的值
  1. #!/bin/bash
  2. #从备份脚本获取到的变量值;对应html里的id名称
  3. #如 v_rman_dir值 则对应 td里面 id=rman_dir里值
  4. v_rman_sid=bb2
  5. v_rman_dir=/appbackup/fast_recovery_area
  6. v_rman_size=2048M
  7. v_rman_mount=`dirname $v_rman_dir`
  8. v_mount_size=`df -m |grep $v_rman_mount| awk '{printf $2}'`
  9. v_new_rman=backupset_db_ORADB_inc_1_20131029
  10. v_new_tag=TAG_DB_INC_1_20131029
  11. v_new_size=345M
  12. v_new_date=2013-10-29 18:49:03
  13. #判断是否全备;
  14. v_is_full=N
  15. if [ ${v_is_full -eq Y ];then
  16. v_full_name=backupset_db_ORADB_full_0_20131025
  17. v_full_tag=TAG_DB_FUll_0_20131028
  18. v_full_size=835M
  19. v_full_date=2013-10-28 18:49:03
  20. fi

  21. #获取备份信息

  22. v_bk_level=1
  23. v_bk_day=`date +%u`
  24. v_bk_date=2013-10-28 18:49:03
  25. v_bk_type=增量
  26. v_bk_size=1024M
  27. -
复制代码
----------------------------------------------------------------------------------------------------------------------------
#要修改的html 的文件名称: test.html
  1. <html>
  2. <head>
  3. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  4. </head>
  5. <h1 align="center"> ORACLE 数据库备份信息</h1>
  6. <table border="1" align="center">
  7. <tr><td  align="center" colspan="4" bgColor=#FFFFCC>数据库信息</td></tr>
  8. <tr>
  9. <td id=rman_sid>ORACLE_SID</td><td colspan="3">bb2</td>
  10. </tr>
  11. <tr>
  12. <td  align="center" colspan="4" bgColor=#FFFFCC>备份概要</td>
  13. </tr>
  14. <tr>
  15. <td colspan="1" align=center id=rman_dir  >备份位置</td><td colspan="3">/appbackup/fast_recovery_area</td>
  16. </tr>
  17. <td colspan="1" align=center id=rman_size >备份总大小</td><td colspan="3">346</td>
  18. </tr>
  19. <tr>
  20. <td id=rman_mount>备份所在分区</td>
  21. <td colspan="3">/appbackup</td>
  22. </tr>
  23. <tr>
  24. <td align=center id=mount_size>分区大小</td><td colspan="3">100G</td>
  25. </tr>
  26. <tr>
  27. <td align=center id=new_rman >最新备份</td><td colspan="3">backupset_db_ORADB_inc_1_20131029</td>
  28. </tr>
  29. <tr>
  30. <td align=center id=new_tag>最新备份TAG</td><td colspan="3">TAG_DB_INC_1_20131029</td>
  31. </tr>
  32. <tr>
  33. <td align=center id=new_size >最新备份大小</td><td colspan="3">235</td>
  34. </tr>
  35. <tr>
  36. <td align=center id=new_size >最新备份时间</td><td colspan="3">2013-10-29 18:49:03</td>
  37. </tr>
  38. <tr>
  39. <td align=center id=full_name>最近全备</td><td colspan="3">backupset_db_ORADB_full_0_20131025</td>
  40. </tr>
  41. <tr>
  42. <td align=center id=full_tag >最近全备TAG</td><td  colspan="3">TAG_DB_FUll_0_20131028</td>
  43. </tr colspan="3">
  44. <tr>
  45. <td align=center id=full_size >最近全备大小</td><td  colspan="3">835M</td>
  46. </tr>
  47. <tr>
  48. <td align=center id=full_date >最近全备时间</td><td colspan="3">2013-10-28 18:49:03</td>
  49. </tr>
  50. <tr>
  51. <td align=center colspan="4"  >一周最新备份时间</td></tr>
  52. <tr>
  53. <td align=center >星期</td>
  54. <td align=center >时间</td>
  55. <td align=center >类型</td>
  56. <td align=center >大小</td>
  57. </tr>
  58. <tr>
  59. <td align=center id=1 >星期一</td><td id=bk_date>2013-10-28 11:17:22</td><td  align="center" id=bk_type>增量</td><td  align="center" id=bk_size>38</td>
  60. </tr>
  61. <tr>
  62. <td align=center id=2 >星期二</td><td id=bk_date>2013-10-29 11:17:22</td><td  align="center" id=bk_type>增量</td><td  align="center" id=bk_size>45</td>
  63. </tr>
  64. <tr>
  65. <td align=center id=3 >星期三</td><td id=bk_date>2013-10-30 11:17:22</td><td  align="center" id=bk_type>增量</td><td  align="center" id=bk_size>68</td>
  66. </tr>
  67. <tr>
  68. <td align=center id=4 >星期四</td><td id=bk_date>2013-10-29 11:18:52</td><td  align="center"id=bk_type>累积增量</td><td align="center" id=bk_size>89</td>
  69. </tr>
  70. <tr>
  71. <td  align=center id=5 >星期五</td><td id=bk_date>2013-10-29 11:19:12</td><td align="center" id=bk_type>增量</td><td  align="center" id=bk_size>89</td>
  72. </tr>
  73. <tr>
  74. <td align=center id=6 >星期六</td><td id=bk_date>2013-10-29 11:19:26</td><td  align="center" id=bk_type>增量</td><td align="center" id=bk_size>102</td>
  75. </tr>
  76. <tr>
  77. <td align=center id=0 >星期日</td><td id=bk_date>2013-10-29 11:25:51</td><td  align="center" id=bk_type>全备</td><td align="center" id=bk_size>1024</td>
  78. </tr>
  79. </table>
  80. </html>
复制代码
效果图:


比如 我今天 做的是增量备份,备份脚本传来的值是:
v_rman_sid=bb2
v_rman_dir=/appbackup/fast_recovery_area
v_rman_size=2048M
v_rman_mount=`dirname $v_rman_dir`
v_mount_size=`df -m |grep $v_rman_mount| awk '{printf $2}'`

#最新备份信息
v_new_rman=backupset_db_ORADB_inc_1_20131029
v_new_tag=TAG_DB_INC_1_20131029
v_new_size=345M
v_new_date=2013-10-29 18:49:03

#备份级别
v_bk_level=1
#星期二, 值 2;用于查找id=2
v_bk_day=`date +%u`
#完成时间
v_bk_date=2013-10-28 18:49:03
#备份类型
v_bk_type=累积增量
#备份大小
v_bk_size=1024M

用这些值更新 test.html里对应内容.
根据id名称找到要更改的行数,然后更改对应列值 .
<td  align="center" id=bk_size>这个值的长度是不确定的</td>
比如
今天是星期二,获得id=2 那么找到星期二这行,把里面 时间,类型,大小列值变成shell变量传递的值.
<td align=center id=2 >星期二</td><td id=bk_date>2013-10-26 11:17:22</td><td  align="center" id=bk_type>增量</td><td  align="center" id=bk_size>45</td>
把 v_bk_date=2013-10-28 18:49:03 替换 <td id=bk_date>2013-10-26 11:17:22</td> 中 的 2013-10-26 11:17:22
接着 v_bk_size=1024M 替换原来<td  align="center" id=bk_size>45</td>中的 45
v_bk_type=累积增量  替换原来<td  align="center" id=bk_type>增量</td> 中 增量
最后这条记录会变成这样
<td align=center id=2 >星期二</td><td id=bk_date>2013-10-29 15:23:20</td><td  align="center" id=bk_type>累积增量</td><td  align="center" id=bk_size>1024M</td>
更改前 星期二的值:

更改后 星期二的值:

根据变量找的旧的值然后替换成shell变量的值.

测试
[root@SCO-10-1-51-26 test]# echo $ds
Tue Oct 29 15:39:05 CST 2013
sed  "/id=2/{s/id=bk_date>\(.*\)/id=bk_date>$ds/}" ts4.html    ---ts4.html  是 test.html的副本
星期二 那行数据变成这样了
<td align=center id=2 >星期二</td><td id=bk_date>Tue Oct 29 15:39:05 CST 2013
我的目标是:
<td align=center id=2 >星期二</td><td id=bk_date>Tue Oct 29 15:39:05 CST 2013</td><td  align="center" id=bk_type>累积增量</td><td  align="center" id=bk_size>1024M</td>

我用sed   "/id=2/{s/id=bk_date>\(.*\)<\/td\>/id=bk_date>$ds/}" ts4.html  替换不出来
最后有人问过类似的问题,根据大神给的语法修改下 用下面的语句:
sed   "/id=2/{s/id=bk_date>\(.*\)/id=bk_date>$ds\1/}"  ts4.html
发现变成这样了:
<td align=center id=2 >星期二</td><td id=bk_date>Tue Oct 29 15:39:05 CST 20132013-10-29 15:23:20</td> <td  align="center" id=bk_type>累积增量</td><td  align="center" id=bk_size>1024M</td>

如何把 <td>2013-10-29 15:23:20</td> 换成<td>Tue Oct 29 15:39:05 CST 2013</td>
灰常感谢

论坛徽章:
60
20周年集字徽章-20	
日期:2020-10-28 14:04:3015-16赛季CBA联赛之北京
日期:2016-07-06 15:42:0715-16赛季CBA联赛之同曦
日期:2016-06-12 10:38:0915-16赛季CBA联赛之佛山
日期:2016-05-27 11:54:56黄金圣斗士
日期:2015-12-02 11:44:35白银圣斗士
日期:2015-11-25 14:32:43白银圣斗士
日期:2015-11-23 12:53:352015亚冠之布里斯班狮吼
日期:2015-10-21 16:55:482015亚冠之首尔
日期:2015-09-01 16:46:052015亚冠之德黑兰石油
日期:2015-08-31 11:39:192015亚冠之萨济拖拉机
日期:2015-08-28 21:06:5315-16赛季CBA联赛之广东
日期:2016-07-12 14:58:53
2 [报告]
发表于 2013-10-29 15:10 |只看该作者
太长了,没看完

论坛徽章:
39
辰龙
日期:2013-08-21 15:45:192015亚冠之广州富力
日期:2015-05-12 16:34:52亥猪
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17双鱼座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亚冠之卡尔希纳萨夫
日期:2015-05-24 15:24:35黄金圣斗士
日期:2015-12-02 17:25:0815-16赛季CBA联赛之吉林
日期:2017-06-24 16:43:52
3 [报告]
发表于 2013-10-29 15:35 |只看该作者
回复 1# 路人呵呵


这种类型的html报告俺倒是经常写,但不是往html代码里改数据,而是每次使用循环生成一个新的html文件出来, 感觉这样更简单些。   

论坛徽章:
0
4 [报告]
发表于 2013-10-29 15:45 |只看该作者
回复 3# 关阴月飞

需要引用旧的数据,比如还没到星期三,星期四. 那么里面的时间是上次的.


   

论坛徽章:
0
5 [报告]
发表于 2013-10-29 15:54 |只看该作者
sed -i "s///" file.html 应该可以完成任务,

论坛徽章:
0
6 [报告]
发表于 2013-10-29 15:55 |只看该作者
本帖最后由 路人呵呵 于 2013-10-29 15:57 编辑

回复 5# ranbinlong

嗯  就是 根据id抓<td id=xxx>旧值</td> 然后把旧值替换掉新的值


   

论坛徽章:
5
亥猪
日期:2013-10-15 13:41:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34申猴
日期:2013-10-28 10:55:45辰龙
日期:2013-10-31 13:29:29丑牛
日期:2014-02-14 11:25:54
7 [报告]
发表于 2013-10-29 22:54 |只看该作者
匹配的第一个分组的内容
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP