编辑:我在 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/