Linux SED变量包含美元符号
我对sed有困难,一个变量包含这样的美元符号Linux SED变量包含美元符号,linux,sed,Linux,Sed,我对sed有困难,一个变量包含这样的美元符号 PASSWORD='AsecretPassword$' 我正在尝试使用“清除”并输出密码文件 sed -i "s,$PASSWORD,ChangeMePassword,g" outputfile.json 我试过了你能想象到的每一个版本的引语。请帮助。好吧,让我们假设您有以下文件: $ cat outputfile commonpassword AsecretPassword$ abc123 如果你能控制图案的价值,你可以避开美元符号: $
PASSWORD='AsecretPassword$'
我正在尝试使用“清除”并输出密码文件
sed -i "s,$PASSWORD,ChangeMePassword,g" outputfile.json
我试过了你能想象到的每一个版本的引语。请帮助。好吧,让我们假设您有以下文件:
$ cat outputfile
commonpassword
AsecretPassword$
abc123
如果你能控制图案的价值,你可以避开美元符号:
$ sed 's,AsecretPassword\$,ChangeMe,g' outputfile
commonpassword
ChangeMe
abc123
唉,我们没有,但是我们可以使用sed来转义变量值:
$ echo $PASSWORD | sed -e 's/\$/\\$/g'
AsecretPassword\$
幸运的是,我们可以使用以下命令将一个命令的输出作为另一个命令的一部分:
…所以我们只需要按照我们最初的命令去做
$ sed "s,$(echo $PASSWORD| sed -e 's/\$/\\&/g'),ChangeMe,g" outputfile
commonpassword
ChangeMe
abc123
在本例中,我们仅转义了一个特殊字符。关于sed还有更多内容,因此在一般情况下可能会有所帮助。我假设它没有按预期工作。请详细说明。你期望得到什么结果?您得到的结果是什么?通过
echo$PASSWORD
可以得到什么?通过echo${PASSWORD}
可以得到什么?如果我回显它,我会得到正确的值。当我运行sed时,我没有得到任何更改,即使当我检查文件时,我得到了输出。我甚至到了code
sed s/'${PASSWORD]'/Monday68\$/g“这两种方法都没有结果?如果您执行PASSWORD='AseTPassword\$'
,即,如您在注释中的代码框中所做的那样,对美元进行转义,会发生什么情况。
$ sed "s,$(echo $PASSWORD| sed -e 's/\$/\\&/g'),ChangeMe,g" outputfile
commonpassword
ChangeMe
abc123