我有一个字符串,我需要#
在开头添加 , 即转换[ -n "$ID" -a "$ID" -le 200 ] && return
为#[ -n "$ID" -a "$ID" -le 200 ] && return
. 我可以使用以下命令:
echo '[ -n "$ID" -a "$ID" -le 200 ] && return'| sed -n -e 's/\[ -n "$ID" -a "$ID" -le 200 \] && return/#&/p'
有用。现在我有两个问题,关于E
, flag。
对于 string
[ -n "$ID" -a "$ID" -le 200 ]
,如果我转义括号,它就不起作用;但是,当我不逃避它们时它会起作用,即sed -n -E 's/[ -n "$ID" -a "$ID" -le 200 ]/#&/p'
工作时
sed -n -E 's/\[ -n "$ID" -a "$ID" -le 200 \]/#&/p'
不起作用。
因为,完整的字符串
[ -n "$ID" -a "$ID" -le 200 ] && return
,当我不逃避它们时,它给了我错误的答案:echo '[ -n "$ID" -a "$ID" -le 200 ] && return'| sed -n -E 's/[ -n "$ID" -a "$ID" -le 200 ] && return/#&/p'
它给了我输出:
[ -n "$ID" -a "$ID" -le 200 #] && return
我想知道它是如何工作的。