关于批处理中sed的大量sed 替换字符串问题

批处理实现文本替换 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 18时,
水蛇.txt的内容为:
正在处理:C:\Program Files\Internet Explorer\IEXPLORE.EXE&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwconn.dll&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwconn1.exe&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwconn2.exe&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwdl.dll&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwhelp.dll&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwip.dun&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwres.dll&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwrmind.exe&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwtutor.exe&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwutil.dll&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwx25a.dun&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwx25b.dun&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\icwx25c.dun&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\inetwiz.exe&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\isignup.exe&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\msicw.isp&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\msn.isp&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\phone.icw&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\phone.ver&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\state.icw&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\support.icw&
正在处理:C:\Program Files\Internet Explorer\Connection Wizard\trialoc.dll&
正在处理:C:\Program Files\Internet Explorer\HMMAPI.DLL&
正在处理:C:\Program Files\Internet Explorer\iedw.exe&
正在处理:C:\Program Files\Internet Explorer\IEXPLORE.EXE&
正在处理:C:\Program Files\Internet Explorer\SIGNUP\INSTALL.INS
执行批处理后得到
水蛇1.txt & & 内容为
del /f /q &C:\Program Files\Internet Explorer\IEXPLORE.EXE &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwconn.dll &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwconn1.exe &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwconn2.exe &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwdl.dll &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwhelp.dll &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwip.dun &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwres.dll &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwrmind.exe &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwtutor.exe &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwutil.dll &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwx25a.dun &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwx25b.dun &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\icwx25c.dun &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\inetwiz.exe &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\isignup.exe &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\msicw.isp &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\msn.isp &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\phone.icw &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\phone.ver &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\state.icw &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\support.icw &
del /f /q &C:\Program Files\Internet Explorer\Connection Wizard\trialoc.dll &
del /f /q &C:\Program Files\Internet Explorer\HMMAPI.DLL &
del /f /q &C:\Program Files\Internet Explorer\iedw.exe &
del /f /q &C:\Program Files\Internet Explorer\IEXPLORE.EXE &
del /f /q &C:\Program Files\Internet Explorer\SIGNUP\INSTALL.INS &
代码片段(3)
1.&[代码]文本替换&&&&
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%i in (水蛇.txt) do (
set var=%%i
set "var=!var:正在处理:=del /f /q "!""
echo !var!&&水蛇1.txt
2.&[代码][Shell/批处理]代码&&&&
Setlocal EnableDelayedExpansion
(for /f "delims=" %%a in (a.txt) do (
set change=
echo "%%a"|find "xxxxxxx"&nul&&set change=1
if not defined change (echo.%%a) else (
set str=%%a
set str2=!str:正在处理:=del /f /q "!"
echo !str2!
start b.txt
3.&[代码]写文件&&&&
type CON & namespace
#!/bin/sed -f
s/globus/GLOBUS/
1,8 w output
开源中国-程序员在线工具:
用notepad++列处理也可
开源从代码分享开始
DTC2的其它代码热门关键字:
利用find和sed批量替换文件内容
这是这个连锁反应:发现apache的log没有分日期、分正误记录 --& 改为分日期、分正误记录log --& 观察错误log,发现有大量404错误 --& 需要修正程序,发现文件路径错误 --& 本机使用Dreamweaver替换路径,提交SVN --& 部署到服务器上时发现文件太多、且分散在子目录中
&&&& 怎么办?一个一个找一个一个上传?傻子才干!既然是在FreeBSD下,那就是用强大的命令行工具吧!实践中发现这个方法真的很实用,记录下来!
&&&& 需求:把本目录下,包括子目录下的文件,把所有含有&/adm/images/c.gif&的地方替换为&/Admin/Images/c.gif&。
&&&& 步骤:找出文件,找到地方,替换。
&&&& 寻找命令:找到文件(find,ls),找到地方(grep),替换(sed)。
&&&& 现在需要做的,就是组合起来。
&&&& 查找资料,有前辈告诫:&find 命令是所有 Linux 命令中最有用的一个,同时也是最混乱的一个&,顿时奔溃。
&&&& 还好,发现find命令有个叫&-exec&的,很是强大:find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' {} \;,注意{}和\;之间的空格。
&&&& 个人理解:-exec参数中的&{}&是该参数前命令产生的结果的一个变量。感觉类似管道的作用了。
&&&& 而且还可以有多个-exec参数,很是强大。基本上grep和sed都可以作为子命令在其中运行了。
&&&& 如此一来,可以使用以下命令列出需要替换的字符串所在的行了:
&&&&以下是代码片段:
&&&&find ./ -exec grep &/adm/images/c.gif& '{}' \;
&&&& 然后再使用一个-exec参数吧sed包含进来吧。
&&&& sed 的工作方式:
&&&&以下是引用片段:
&&&&sed 实用工具按顺序逐行将文件读入到内存中。然后,它执行为该行指定的所有操作,并在完成请求的修改之后将该行放回到内存中,以将其转储至终端。完成了这一行上的所有操作之后,它读取文件的下一行,然后重复该过程直到它完成该文件。默认输出是将每一行的内容输出到屏幕上。在这里,开始涉及到两个重要的因素D首先,输出可以被重定向到另一文件中,以保存变化;第二,源文件(默认地)保持不被修改。sed 默认读取整个文件并对其中的每一行进行修改。不过,可以按需要将操作限制在指定的行上。
&&&& 注意后面提到的源文件不会修改,不过sed提供了-i参数,可以做到控制是否可以修改源文件。-i参数的描述,Linux和FreeBSD下不太一样,后来也发现Linux在命令的使用方便上的确是要强于FreeBSD的。分述如下:
&&&&以下是引用片段:
&&&&FreeBSD 4.7-STABLE下:&&&& -i extension&&&&&&&&&&&& Edit files in-place, saving backups with the specified extension.&&&&&&&&&&&& If a zero-length extension is given, no backup will be saved.& It&&&&&&&&&&&& is not recommended to give a zero-length extension when in-place&&&&&&&&&&&& editing files, as you risk corruption or partial content in situ-&&&&&&&&&&&& ations where disk space is exhausted, etc.
&&&&Linux下:&&&&&& -i[SUFFIX], --in-place[=SUFFIX]&&&&&&&&&&&&& edit files in place (makes backup if extension supplied)
&&&& FreeBSD下说如果-i参数后面的后缀如果为0,则不产生备份文件,结果我试了好几次都没有搞定,不得已,使用了一个备份文件来存储源文件,然后修改源文件:
以下是代码片段:find ./ -exec grep &/adm/images/c.gif& '{}' \; -exec sed -i .bak 's/\/adm\/images\/c.gif/\/Admin\/Images\/c.gif/g' {} \;
&&&& 比如下面的就不行,老提示错误,望知情者指教:
以下是代码片段:find ./ -exec grep &/adm/images/c.gif& '{}' \; -exec sed -i 's/\/adm\/images\/c.gif/\/Admin\/Images\/c.gif/g' {} \;
&&&& Linux下,可以不产生备份文件直接修改了:
以下是代码片段:find ./ -exec grep &/adm/images/c.gif& '{}' \; -exec sed -i 's/\/adm\/images\/c.gif/\/Admin\/Images\/c.gif/g' {} \;
&&&& 当然,需要强调的是:备份还是很重要的!切记切记!
&&&& 本文环境如下:
以下是引用片段:FreeBSD:FreeBSD 4.7-STABLE
&&&&Linux:[root@bsso Admin_bak]# cat /etc/issueCentOS release 4.1 (Final)Kernel \\r on an \\m[root@bsso Admin_bak]# sed --versionGNU sed version 4.1.2Copyright (C) 2003 Free Software Foundation, Inc.T see the source for copying conditions.& There is NO not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE,to the extent permitted by law.
&&&& 另:&&& 1:FreeBSD下如何查看sed的版本呢?&&& 2:网上看见资料说,类似下面的语句应该是可以达到目的,当我在FreeBSD和Linux下都没有运行成功
以下是代码片段:sed -i 's/\/adm\/images\/c.gif/\/Admin\/Images\/c.gif/g' `grep -rf &/adm/images/c.gif&`
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
嵌入式linux中文站
用微信扫一扫关注我们
随时获取最新开源资讯sed使用变量进行匹配替换的问题
sed使用变量进行匹配替换的问题
环境:MacOS X 10.8.2在MacOS下使用sed进行字符串替换,并保存到原文件中:sed -i '' 's/源字符/目标字符/g' 文件其中 -i 后面的单引号是设置备份文件。设置为空表示不需要备份。* 在MacOS 10.8.2环境中,必须设置这个参数,否则不会保存到原文件中。其它版本和系统我没有环境测试,详细不知。以下命令sed -i '.bak' 's/源字符/目标字符/g' foobar.txt在对文件内容进行替换并保存后,会产生一个foobar.txt.bak的备份文件。有时候源字符和目标字符并非固定字符串,需要使用变量指定字符串内容。sed使用变量参数有点特殊:‘ “$var ” ’ 外单引号内双引号,变量参数。当然,没有空格,这里只是为了演示才加空格。完整的命令类似于:sed -i '' 's/'"$pattern"'/'"$target"'/g'$src_file
发表评论:
TA的最新馆藏当前位置:&>&&>&
linux批量替换文件内容的三种方法 perl、sed与shell批量替换文件内容
发布时间:编辑:
本文介绍下,在linux中使用perl、sed与shell脚本批量替换文件内容的方法,有需要的朋友参考学习下。
文件内容命令结构如下:
find -name '要查找的文件名' |
perl -pi -e 's|被替换的字符串|替换后的字符串|g'
将当前目录及所有子目录下的所有pom.xml文件中的/maven2 替换为http://localhost:8081/nexus/content/groups/public.
find -name 'pom.xml' | xargs perl -pi -e 's|/maven2|http://localhost:8081/nexus/content /groups/public|g'
perl命令:
perl -pi -e 在Perl 命令中加上-e 选项,后跟一行代码,那它就会像运行一个普通的Perl 那样运行该代码.
从中使用Perl 能够帮助实现一些强大的、实时的转换。
perl代码:
find -name 'pom.xml' | xargs perl -pi -e 's|/maven2|http://localhost:8081/nexus/content/groups/public|g'
Linux下批量替换多个文件中的字符串的简单方法。
用命令可以批量替换多个文件中的字符串。
sed -i &s/原字符串/新字符串/g& `grep 原字符串 -rl 所在目录`
例如:把mahuinan替换 为huinanma,执行命令:
sed -i &s/mahuinan/huinanma/g& 'grep mahuinan -rl /www'
具体格式:
sed -i &s/oldString/newString/g&& `grep oldString -rl /path`
实例代码:
复制代码 代码示例:
sed -i &s/大小多少/日月水火/g& `grep 大小多少 -rl /usr/aa`
sed -i &s/大小多少/日月水火/g& `grep 大小多少 -rl ./`
将某个变量名修改为另一个变量名,如果这个变量是一个局部变量的话,vi足以胜任。
如果是某个的话,并且在很多文件中进行了使用,此时使用vi就不行了。
此时,可以使用命令,可以一次性将所有文件中的指定字符串进行修改:
grep &abc& * -R |
-F: '{print $1}' | sort | uniq | xargs sed -i 's/abc/abcde/g'
补充说明:
sed -i &s/oldString/newString/g&& `grep oldString -rl /path`&&&
对多个文件的处理可能不支持,需要用 xargs, 搞定。
变种如下:
grep oldString -rl /path | xargs sed -i &s/oldString/newString/g&
在`grep oldString -rl /path` 中 ` 为1前边的反引号`,而不是enter前的'。
您可能感兴趣的文章:
与 linux批量替换文件内容的三种方法 perl、sed与shell批量替换文件内容 有关的文章
本文标题:
本页链接:
12345678910
12345678910bat批处理,求大神支招,一直再修改txt,需要同时批量替换多个关键字,求个批处理_百度知道

我要回帖

更多关于 sed 正则表达式 替换 的文章

 

随机推荐