在 Win7 中使用 sed 时出现非常奇怪的行为:手册说用单引号 (') 包围替换命令 - 拒绝,只允许双引号 (")。另外我想将文件中的双引号更改为另一个字符
- sed“s/”/Q/”-结果未知选项
- sed“s/\”/Q/”-结果参数无效
- sed“s/'/Q/”-结果无变化
- sed "s/\'/Q/" - 结果将“Q”添加到行尾 - 将 \' 视为行尾标记 $
我已经在 SCO Unix 中成功使用 sed - 我做错了什么?
答案1
sed --version 显示 4.2.1 并且我已检查是 gnuwin32 的而不是 cygwin 的。
这将创建一个包含引文的文件 aa。
C:\blah>copy con a.a
"^Z
Overwrite a.a? (Yes/No/All): y
1 file(s) copied.
C:\blah>cat a.a
"
C:\blah>sed "s/\"/Q/" a.a
Q
重复引用有点搞笑,但可以用^"
C:\blah>echo " | sed "s/\"/Q/"
" | sed "s/\"/Q/"
C:\blah>echo ^" | sed "s/\"/Q/"
Q
但你甚至不需要用引号括住整个 sed 替换表达式
C:\blah>echo ^" | sed s/\"/Q/
Q
C:\blah>sed s/\"/Q/ a.a
Q
C:\blah>
答案2
我把这个 pepe“el toro”放在文件 oo.txt 中,并使用此命令(使用 GNUwin32 projet 中的 sed)sed -i“s/\”/Q/g“oo.txt
我在 oo.txt 文件和一些垃圾文件上看到了这个 pepe Qel toroQ,但我认为它对你有用。