GnuWin32 sed 如何搜索和替换引号?Win7 UK

GnuWin32 sed 如何搜索和替换引号?Win7 UK

在 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,但我认为它对你有用。

相关内容