cygwin上的sed行为不一致

时间:2014-05-23 04:35:50

标签: windows sed cygwin

我一直面临一个问题,某个sed表达式在一个Windows系统上运行并且在其他系统上运行。 shell脚本在cygwin上运行,其中cygwin和sed版本相同。

表达:

url=$(echo ${!1} | sed 's/{/\\\{/g'); \
系统上的

错误是:

Error: /usr/bin/sed: -e expression #1, char 2: unterminated `s' command

因此,当我通过逃避括号来使用它时,它可以工作:

url=$(echo ${!1} | sed 's/\{/\\\{/g'); \

但另一方面的突破却有错误说:

sed: -e expression #1, char 11: Invalid preceding regular expression

请帮助..坚持一段时间。如果您需要更多详细信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

代替\{

echo ${!1} | sed -e 's/{/\\{/g'

\\{

echo ${!1} | sed -e 's/{/\\\\{/g')

3 \并且没有明确的-e肯定是问题所在。

信息:我的cygwin上的代码没有错误(使用直接字符串代替${!1}

如果你逃离第一个{,sed正在等待一些出现正则表达式和一个右括号(例如:\{1,\}