我一直面临一个问题,某个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
请帮助..坚持一段时间。如果您需要更多详细信息,请与我们联系。
答案 0 :(得分:0)
代替\{
echo ${!1} | sed -e 's/{/\\{/g'
或\\{
echo ${!1} | sed -e 's/{/\\\\{/g')
3 \
并且没有明确的-e
肯定是问题所在。
信息:我的cygwin上的代码没有错误(使用直接字符串代替${!1}
如果你逃离第一个{
,sed正在等待一些出现正则表达式和一个右括号(例如:\{1,\}
)