中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: sed中特殊字符怎么表达? 上一主题 | 下一主题
jtyuer
初级用户





积分 73
发帖 29
注册 2006-8-13
状态 离线
『楼 主』:  sed中特殊字符怎么表达?

我想利用sed修改txtsetup.sif文件的的一段话,将 SetupSourcePath = "\" 改为 SetupSourcePath = "\WINXP\ACER\" 我知道\是转义符,可是我用了好多种方法都提示错误,下面是我曾试过的: sed -i "s/SetupSourcePath = "\"/SetupSourcePath = "\WINXP\ACER\"/g" txtsetup.sif sed -i "s/SetupSourcePath = "\\"/SetupSourcePath = "\\WINXP\\ACER\\"/g" txtsetup.sif sed -i "s/SetupSourcePath = "\\\"/SetupSourcePath = "\\\WINXP\\\ACER\\\"/g" txtsetup.sif sed -i "s/SetupSourcePath = "\/"/SetupSourcePath = "\/WINXP\/ACER\/"/g" txtsetup.sif 还有其它,可每次执行后都提示错误,大意说s参数不对,如果改成 sed -i "s/SetupSourcePath/SetupSourcePathWINXP/g" txtsetup.sif 这样就没问题,所以我肯定是sed中\这个特殊符号我表达错误了,望各位老大看一下,帮我改这个一下。谢谢大家!


2006-8-15 14:30
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
jtyuer
初级用户





积分 73
发帖 29
注册 2006-8-13
状态 离线
『第 2 楼』:  

老大们,帮帮忙哎,看看上面的应该怎么改?


2006-8-16 11:26
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
jtyuer
初级用户





积分 73
发帖 29
注册 2006-8-13
状态 离线
『第 3 楼』:  

不管对错大家给个意见撒,拜托了!!!!!


2006-8-16 20:44
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 4 楼』:  

CMD 下的双引号问题很让人头痛,简单的做法是用ASII码值22来表示 “ ,转换为正则表达式为\x22,请参考下面的做法:
1、sed "s/SetupSourcePath = \x22\\\x22/SetupSourcePath = \x22\\WINXP\\ACER\\\x22/" txtsetup.sif
2、sed "s/SetupSourcePath = \x22\\/&WINXP\\ACER\\/" txtsetup.sif




  ☆开始\运行 (WIN+R)☆ %ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
2006-8-16 21:29
查看资料  发送邮件  发短消息  网志  OICQ (105400208)  编辑帖子  回复  引用回复
jtyuer
初级用户





积分 73
发帖 29
注册 2006-8-13
状态 离线
『第 5 楼』:  

Originally posted by 无奈何 at 2006-8-16 21:29: CMD 下的双引号问题很让人头痛,简单的做法是用ASII码值22来表示 “ ,转换为正则表达式为\x22,请参考下面的做法: [code] 1、sed "s/SetupSourcePath = ...
谢谢版主回复!但是我试了一下,两条命令都不行。会不会是我的sed版本问题?


2006-8-16 22:01
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
无奈何
荣誉版主





积分 1338
发帖 356
注册 2005-7-15
状态 离线
『第 6 楼』:  

在我这里测试良好,贴一下错误信息。你的 SED 用的什么版本,要很好的支持 -i 参数的话,建议用 GNU sed 4.14。
C:\TEST>sed "s/SetupSourcePath = \x22\\/&WINXP\\ACER\\/" t.txt SetupSourcePath = "\WINXP\ACER\" C:\TEST>sed "s/SetupSourcePath = \x22\\\x22/SetupSourcePath = \x22\\WINXP\\ACER\ \\x22/" t.txt SetupSourcePath = "\WINXP\ACER\" C:\TEST>




  ☆开始\运行 (WIN+R)☆ %ComSpec% /cset,=何奈无── 。何奈可无是原,事奈无做人奈无&for,/l,%i,in,(22,-1,0)do,@call,set/p= %,:~%i,1%<nul&ping/n 1 127.1>nul
2006-8-16 22:12
查看资料  发送邮件  发短消息  网志  OICQ (105400208)  编辑帖子  回复  引用回复
jtyuer
初级用户





积分 73
发帖 29
注册 2006-8-13
状态 离线
『第 7 楼』:  

用GM推荐的GNU Sed4.1.4的结果:


2006-8-16 23:44
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
jtyuer
初级用户





积分 73
发帖 29
注册 2006-8-13
状态 离线
『第 8 楼』:  

感谢无奈何的鼎力相助,问题已解决,原来是我用的sed版本的问题,估计太老了。再次感谢版主!


2006-8-17 00:06
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
flyingphf
中级用户





积分 392
发帖 142
注册 2007-6-10
状态 离线
『第 9 楼』:  

我想问下如果有/该怎么表示啊


2008-3-29 14:41
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
ThinKing
中级用户





积分 471
发帖 207
注册 2007-5-3
状态 离线
『第 10 楼』:  

Originally posted by flyingphf at 2008-3-29 02:41 PM: 我想问下如果有/该怎么表示啊
换个分割符。 eg : sed "s~http://~ftp://~g" ufile [ Last edited by ThinKing on 2008-3-29 at 02:51 PM ]


2008-3-29 14:49
查看资料  发短消息  网志   编辑帖子  回复  引用回复
sylovanas
初级用户





积分 107
发帖 42
注册 2007-9-3
状态 离线
『第 11 楼』:  

\x2F也可以 ascii /是2F


2008-3-29 15:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: