文件内容替换。支持批量处理和特殊字符。

 1 #include <stdio.h>
 2 #include <iostream>
 3 #include <fstream>
 4 #include <sstream>
 5 #include <streambuf>
 6 #include <string>
 7 #include <io.h>
 8
 9 using namespace std;
10
11 int string_replace(std::string& buf, const std::string & src, const std::string & dest)
12 {
13     int pos = 0;
14     int src_len = src.size();
15     int dest_len = dest.size();
16     int replace_count = 0;
17
18     while(pos != string::npos)
19     {
20         if((pos = buf.find(src, pos)) > 0)
21             buf.replace(pos, src_len, dest), replace_count++;
22     }
23
24     return replace_count;
25 }
26
27 int main(int argc, char* argv[])
28 {
29     _finddata_t fd;
30
31     char srcStr[] =        "oooooooooooooooooooooooooooooo";
32     char destStr[] =    "xxxxxxxxxxxxxxxxxxxxxxxxxxx";
33
34
35     long pf = _findfirst("*.cpp",&fd);
36     do
37     {
38         if ((fd.attrib & _A_RDONLY) == 0) // ignore read-only file
39         {
40             // read all from source file
41             ifstream inf(fd.name);
42             std::stringstream filebuf;
43             filebuf << inf.rdbuf();
44             std::string buf(filebuf.str());
45             inf.close();
46
47             // replace string and recover orignal file
48             if (string_replace(buf, std::string(srcStr), string(destStr)))
49             {
50                 char newName[128];
51                 memset(newName, 0, 128);
52                 sprintf(newName, "%s.bak", fd.name);
53                 ofstream  newInf;
54                 newInf.open(newName, ios::out);
55                 newInf << buf;
56                 newInf.close();
57
58                 char cmd[100];
59                 sprintf(cmd, "move /Y %s %s", newName, fd.name);
60                 system(cmd);
61             }
62
63         } // loop one file
64     }while (!_findnext(pf,&fd));
65
66     _findclose(pf);
67
68     return 0;
69 }

遍历一个文件夹下是所有类型文件,替换字符串。

时间: 2024-10-11 04:22:46

文件内容替换。支持批量处理和特殊字符。的相关文章

文件内容替换功能

实现替换功能:分别传入文件名源字符串和要修改后的字符串,实现将文件内容源字符串被替换成修改后的字符串要求不产生新文件: import sys,os with open (sys.argv[1],'r') as fr open('a.txt.bak','w+') as fw: src_res=fr.read() dst_res=src_res.replace(sys.argv[2],sys.argv[3]) fw.write(dst_res) os.remove(sys.argv[1]) os.r

shell 文件内容替换 sed用法

调用sed命令有两种形式: sed [options] 'command' file(s) sed [options] -f scriptfile file(s) 删除:d命令 $ sed '2d'   example-----删除example文件的第二行. $ sed '2,$d' example-----删除example文件的第二行到末尾所有行. $ sed '$d' example-----删除example文件的最后一行. $ sed '/test/'d example-----删除

PHP实现阿里云OSS文件上传(支持批量)

上传文件至阿里云OSS,整体逻辑是,文件先临时上传到本地,然后在上传到OSS,最后删除本地的临时文件(也可以不删,具体看自己的业务需求),具体实现流程如下: 1.下载阿里云OSS对象上传SDK(PHP版) 通过Github下载 2.解压后,可自行修改目录名称,以下为本人项目实例(aliyun_oss改过之后的名称) 项目目录结构如下: 3.Index.php 为文件上传静态表单页 4.do_upload.php 为文件处理控制页,封装的代码如下:上传文件相关的辅助函数可以自行封装,本文是为了便于

mvc文件上传支持批量上传,拖拽以及预览,文件内容校验等

使用bootstrap-fileinput 使用方式: 1.nuget:Install-Package bootstrap-fileinput 2.语言本地化{下载fileinput_locale_zh.js}或者修改Fileinput中的本地化词汇 3.文件大小限制:修改fileinput.js中的3195行 maxFilePreviewSize配置节点 示例:前台 @{ Layout = null; } <!DOCTYPE html> <html> <head> &

python 实现类似sed命令的文件内容替换

#!/usr/bin/env python     #_*_coding:utf-8 _*_     #replace()方法把字符串中的 old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换不超过 max 次.     #语法:str.replace(old, new[, max])     import sys,os     old_text, new_text, file_name = sys.argv[1], sys.argv[2], sys.argv[3]   

python 3文件内容替换

在原有的文件上,修改替换,并放到新的文件里 old = open('day','r') new = open('new_day','w') old_replace = input('please replace content:') new_replace = input('please new replace content:') for i in old: if old_replace in i: i = i.replace(old_replace,new_replace) new.writ

linux下sed批量替换文件内容

在linux超级终端下编辑文档是件比较麻烦的事情,下面简单介绍一下如何在linux下批量替换文件内容 linuxsed 批量替换多个文件中的字符串 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 例如:替换/home下所有文件中的xxx为ooo sed -i "s/xxx/ooo/g" `grep xxx -rl /home` 单个文件中的字符串替换 将文件1.txt内的文字“111”替换成“222” sed -i &qu

linux下批量替换文件内容

linux下批量替换文件内容 1.网络上现成的资料 格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` linux sed 批量替换多个文件中的字符串 sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir` 例如:替换/home下所有文件中的www.admin99.net为admin99.net sed -i "s/www.admin99.net/a

sed批量替换文件内容

sed -i "s/123/456/g" `grep 123 -rl ./ | grep -v log` #把当前目录下所有文件中的123替换成456,包括子目录啊 sed批量替换文件内容