Sed 消失了

问题描述 投票:0回答:1

我正在尝试 sed htpasswd 文件行

test:$y$j9T$WLGY.14lZu0BzrKsc6DCW.$QVsQJiEjSVhDpmOpUuYYw9/VE7ozGe92Y2FWapPAwK1

当我这样做时

user="test"
regexGrep="^$user"

$(cat ./.htpasswd | grep -E $regexGrep | sed -E "s/${user}:(.*)/\1/")

我明白了

sed: -e expression #1, char 0: no previous regular expression

看起来消失了

在同一个 bash 文件中,如果我尝试这样做

regexSed="s@test:(.*)@\1@"
echo $regexSed

regexSed="s/${user}:(.*)/\1/"
echo $regexSed

我得到这些结果

s@test:(.*)@@
s/test:(.*)//

知道为什么会发生这种情况吗?

regex bash sed
1个回答
0
投票

也许您应该转义双引号字符串中的反斜杠:

用途:

sed -E "s/${user}:(.*)/\\1/"

sed -E 's/'"${user}"':(.*)/\\1/'
© www.soinside.com 2019 - 2024. All rights reserved.