免费注册 查看新帖 |

Chinaunix

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

如何实现对多个文件的带引号字符串的批量替换? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-23 15:45 |只看该作者 |倒序浏览
.... 别人一个插件的脚本有点问题,
把#include <StdAfx.h>写成了#include "StdAfx.h"
....我想做批量替换,可是发现很困难,还望达达们援手!

论坛徽章:
0
2 [报告]
发表于 2008-08-23 21:29 |只看该作者
用AWK替换。或者用我的笨办法:
挨行读取文件替换再写回:

  1. while(fgets(szline, 1024, fp))
  2. {
  3.         char*p = strstr(szline, "#include");
  4.         if(p)
  5.         {
  6.                 char*q = p+8;
  7.                 char* start = 0;
  8.                 while(*q != '\n')
  9.                 {
  10.                         if(*q == ':')
  11.                         {
  12.                                 if(start == 0)
  13.                                 {
  14.                                         start = q;
  15.                                 }else
  16.                                 {
  17.                                         *start = '<';
  18.                                         *q = '>';
  19.                                         break;
  20.                                 }
  21.                         }
  22.                               q++;
  23.                 }
  24.         }
  25. }
复制代码

[ 本帖最后由 duanjigang 于 2008-8-23 21:36 编辑 ]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2008-08-23 22:07 |只看该作者
原帖由 duanjigang 于 2008-8-23 21:29 发表
用AWK替换。或者用我的笨办法:
挨行读取文件替换再写回:

这种任务正是脚本应该大展拳脚的地方,没必要动用 C。

论坛徽章:
34
亥猪
日期:2015-03-20 13:55:11戌狗
日期:2015-03-20 13:57:01酉鸡
日期:2015-03-20 14:03:56未羊
日期:2015-03-20 14:18:30子鼠
日期:2015-03-20 14:20:14丑牛
日期:2015-03-20 14:20:31辰龙
日期:2015-03-20 14:35:34巳蛇
日期:2015-03-20 14:35:56操作系统版块每日发帖之星
日期:2015-11-06 06:20:00操作系统版块每日发帖之星
日期:2015-11-08 06:20:00操作系统版块每日发帖之星
日期:2015-11-19 06:20:00黄金圣斗士
日期:2015-11-24 10:43:13
4 [报告]
发表于 2008-08-23 23:46 |只看该作者
用 sed 全文替换应该可以吧?

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
5 [报告]
发表于 2008-08-23 23:54 |只看该作者
对源代码做批量替换容易擦枪走火,如确定没副作用,可以试下这个命令:
  1. perl -pi -e 's/(?<=#include)\s+"\s*(StdAfx.h)\s*"/ <$1>/' [file...]
复制代码

[ 本帖最后由 timespace 于 2008-8-24 00:00 编辑 ]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2008-08-24 00:50 |只看该作者
原帖由 timespace 于 2008-8-23 23:54 发表
对源代码做批量替换容易擦枪走火,如确定没副作用,可以试下这个命令:

批量修改完了再和原来的版本递归比较,复查下不就完了。

论坛徽章:
0
7 [报告]
发表于 2008-08-25 20:51 |只看该作者
原帖由 timespace 于 2008-8-23 23:54 发表
对源代码做批量替换容易擦枪走火,如确定没副作用,可以试下这个命令:
perl -pi -e 's/(?

论坛徽章:
0
8 [报告]
发表于 2008-08-25 20:57 |只看该作者
SHELL就够了,为什么要写程序?

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2008-08-25 22:51 |只看该作者
原帖由 linuxkernel.boy 于 2008-8-25 20:57 发表
SHELL就够了,为什么要写程序?

不要把写程序看得那么严重,写个脚本也是写程序。

论坛徽章:
0
10 [报告]
发表于 2008-08-26 21:23 |只看该作者
习惯风格不同而已 只要能搞定问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP