免费注册 查看新帖 |

Chinaunix

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

sed多行替换或者指定位置插入多行文本 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-01-10 11:47 |只看该作者 |倒序浏览
sed多行替换或者指定位置插入多行文本

怎么在站点中所有的jsp 的文件的</body>标签前插入google分析代码

google的站点分析代码:

  1. <script src="http://www.google-analytics.com/aaaa.js" type="text/javascript">
  2. </script>
  3. <script type="text/javascript">
  4. _uacct = "UA-1169796-1";
  5. urchinTracker();
  6. </script>
复制代码



查了一下以往的帖子,sed多应用在单行的字符的替换上,多行的替换好象比较复杂了。

下面这样子是参考了Edengundam (Eden)  兄弟   的示例做的,  但只是打印到标准输出, 不能直接更新原有文件,

原有的文件上千个在不同的目录下,如果生成临新的文件一个个更新起来也很麻烦.


  1. cat  $(find . -name *.jsp -print) | sed '/<\/body>/i\
  2. <script src="http://www.google-analytics.com/aaaa.js" type="text/javascript">\
  3. </script>\
  4. <script type="text/javascript">\
  5. _uacct = "UA-1169796-1";\
  6. urchinTracker();\
  7. </script>'

复制代码

[ 本帖最后由 echo52 于 2007-1-10 13:10 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-01-10 11:58 |只看该作者
原帖由 echo52 于 2007-1-10 11:47 发表
怎么在站点中所有的jsp 的文件的</body>标签前插入google分析代码

google的站点分析代码:
<script src="http://www.google-analytics.com/aaaa.js" type="text/javascript&q ...


继续用大家不喜欢的...i

  1. Administrator@TMA ~
  2. $ echo '<html>
  3. <head>
  4. </head>
  5. <body>
  6. </body>
  7. </html>' | sed '/<\/body>/i\
  8. <script src="http://www.google-analytics.com/aaaa.js" type="text/javascript">\
  9. </script>\
  10. <script type="text/javascript">\
  11. _uacct = "UA-1169796-1";\
  12. urchinTracker();\
  13. </script>'
  14. <html>
  15. <head>
  16. </head>
  17. <body>
  18. <script src="http://www.google-analytics.com/aaaa.js" type="text/javascript">
  19. </script>
  20. <script type="text/javascript">
  21. _uacct = "UA-1169796-1";
  22. urchinTracker();
  23. </script>
  24. </body>
  25. </html>

复制代码

论坛徽章:
0
3 [报告]
发表于 2007-01-10 12:08 |只看该作者
如果不想生成新的文件,直接在原有的文件上更新呢?因为find . -name *.jsp -print 的文件上千个,如用新的文件又涉及到删除原始文件替换的问题.

[ 本帖最后由 echo52 于 2007-1-10 12:50 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-01-10 16:58 |只看该作者
try
  1. find . -name *.jsp -print |while read fname
  2. do
  3.   sed 文本操作 > $fname$$
  4.   mv $fname$$ $fname
  5. done
复制代码

论坛徽章:
0
5 [报告]
发表于 2007-01-10 17:05 |只看该作者
原帖由 echo52 于 2007-1-10 12:08 发表
如果不想生成新的文件,直接在原有的文件上更新呢?因为find . -name *.jsp -print 的文件上千个,如用新的文件又涉及到删除原始文件替换的问题.



如果你的sed 支持 -i 就加这个选项, 否则就用awk兄的~~~

论坛徽章:
0
6 [报告]
发表于 2007-01-10 17:07 |只看该作者
原帖由 Edengundam 于 2007-1-10 17:05 发表



如果你的sed 支持 -i 就加这个选项, 否则就用awk兄的~~~

我那只有个壳子,^_^
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP