regex - 帮助 SED 语法 : unterminated `s' command

标签 regex sed cygwin

编辑:我在 Windows Vista 上使用 CYGWIN/GNU sed 4.1.5 版,我想要一个不区分大小写的搜索

我想用sed代替inline,如下:

c:\DEV\Suite\anything here --- blah 12 334 xxx zzzzz etc\Modules etc

编辑: 此处的任何内容 --- blah 12 334 xxx zzzzz 等意味着此处可能出现任何内容。很抱歉省略了。

在文件中包含类似的行

FileName="c:\DEV\Suite\anything here --- blah 12 334 xxx zzzzz etc\Modules\.... snipped ...."

我提供一个值,比如说:

Project X - Version 99.98

所以文件结束了:

FileName="c:\DEV\Suite\Project X - Version 99.98\Modules\.... snipped ...."

我的尝试:

c:\temp>sed -r -b s/Dev\\Suite\\.*\\Modules/dev\\suite\\simple\\/g test.txt

但是我收到以下错误:

sed: -e expression #1, char 42: unterminated `s' command

谢谢。 编辑: 我已经尝试过添加引号。

最佳答案

它是 '/' 之前的 '\\'。显然你需要 4 个反斜杠。

sed -r -b "s/Dev\\\\Suite\\\\.*\\\\Modules/dev\\\\suite\\\\simple\\\\/g" test.txt

我认为 shell 在将 '\\' 传递给 sed 之前将其解释为 '\',然后 sed 对它得到的内容做同样的事情。

单引号可以工作,所以:

sed -r -b 's/Dev\\Suite\\.*\\Modules/dev\\suite\\simple\\/g' test.txt

关于regex - 帮助 SED 语法 : unterminated `s' command,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1269788/

相关文章:

javascript - 正则表达式如何评估为不同的值

sed - 提取括号之间的字符串

regex - sed 正则表达式 最后一场比赛

windows - 在关机或启动时运行 Cygwin 脚本

bash - Cygwin 中的 root 用户/sudo 等价物?

python - pyparsing 开始和结束字符串相同

c# - 以下正则表达式在做什么 (?-mix :{0})

c++ - 尝试将我的 C++ 可执行文件与 Fortran 库(Cygwin 环境)链接起来

regex - 比较两个文件并按顺序打印它们之间的差异

sed - 如何使用sed用一个空格替换空格?