中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-24 00:27
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,274 会员排行
DOS批处理 & 脚本技术(批处理室) » sed中特殊字符怎么表达?
可打印版本  1,800 / 10
第1楼 jtyuer 发表于 2006-08-15 14:30
初级用户 发帖 29 积分 73
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中\这个特殊符号我表达错误了,望各位老大看一下,帮我改这个一下。谢谢大家!
第2楼 jtyuer 发表于 2006-08-16 11:26
初级用户 发帖 29 积分 73
老大们,帮帮忙哎,看看上面的应该怎么改?
第3楼 jtyuer 发表于 2006-08-16 20:44
初级用户 发帖 29 积分 73
不管对错大家给个意见撒,拜托了!!!!!
第4楼 无奈何 发表于 2006-08-16 21:29
荣誉版主 发帖 356 积分 1,338
CMD 下的双引号问题很让人头痛,简单的做法是用ASII码值22来表示 “ ,转换为正则表达式为\x22,请参考下面的做法:
第5楼 jtyuer 发表于 2006-08-16 22:01
初级用户 发帖 29 积分 73
Originally posted by 无奈何 at 2006-8-16 21:29:
CMD 下的双引号问题很让人头痛,简单的做法是用ASII码值22来表示 “ ,转换为正则表达式为\x22,请参考下面的做法:
第6楼 无奈何 发表于 2006-08-16 22:12
荣誉版主 发帖 356 积分 1,338
在我这里测试良好,贴一下错误信息。你的 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>
第7楼 jtyuer 发表于 2006-08-16 23:44
初级用户 发帖 29 积分 73
用GM推荐的GNU Sed4.1.4的结果:
第8楼 jtyuer 发表于 2006-08-17 00:06
初级用户 发帖 29 积分 73
感谢无奈何的鼎力相助,问题已解决,原来是我用的sed版本的问题,估计太老了。再次感谢版主!
第9楼 flyingphf 发表于 2008-03-29 14:41
中级用户 发帖 142 积分 392
我想问下如果有/该怎么表示啊
第10楼 ThinKing 发表于 2008-03-29 14:49
中级用户 发帖 207 积分 471
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 ]
第11楼 sylovanas 发表于 2008-03-29 15:00
初级用户 发帖 42 积分 107
\x2F也可以 ascii /是2F
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023