Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux SED变量包含美元符号_Linux_Sed - Fatal编程技术网

Linux SED变量包含美元符号

Linux SED变量包含美元符号,linux,sed,Linux,Sed,我对sed有困难,一个变量包含这样的美元符号 PASSWORD='AsecretPassword$' 我正在尝试使用“清除”并输出密码文件 sed -i "s,$PASSWORD,ChangeMePassword,g" outputfile.json 我试过了你能想象到的每一个版本的引语。请帮助。好吧,让我们假设您有以下文件: $ cat outputfile commonpassword AsecretPassword$ abc123 如果你能控制图案的价值,你可以避开美元符号: $

我对sed有困难,一个变量包含这样的美元符号

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