如何在 bash 脚本的 sed 中保留美元符号?
How to keep dollar sign within sed in the bash script?
我正在尝试找到一种方法来转义 bash 脚本中 sed
命令中的美元符号。我在这里找到了大量的答案,这些答案说你需要连续放置四个反斜杠才能转义该标志。我也试过带有两个反斜杠的版本,但出于某种原因,我无法让它工作。有人可以告诉我我做错了什么吗?
假设您在 /home/Documents
中有一个名为 aaa.txt
的文件。该文件只有一行文本,即 aaa
。我正在尝试使用此命令替换它(请不要告诉我我可以用不同于行号的方式引用它,因为这只是我正在做的其他事情的简化示例):
sed -i "1ccd /home/userr/$PARAMETER/$METHOD" "/home/userr/Documents/aaa.txt"
我得到的输出是这样的:
cd /home/userr/\/\
这不是我想要的。我想要这个输出,字符串中有美元符号:
cd /home/userr/$PARAMETER/$METHOD
传递给 sed
命令以实现此目的的字符串的正确格式是什么?
您可以使用反斜杠转义美元符号:
sed -i "1ccd /home/userr/$PARAMETER/$METHOD" "/home/userr/Documents/aaa.txt"
文档在这里:https://www.gnu.org/software/bash/manual/html_node/Escape-Character.html
您需要删除双引号,这样 sed
就不会尝试展开它。 sed
无需转义即可正常工作。
$ sed -i '1ccd /home/userr/$PARAMETER/$METHOD' /home/userr/Documents/aaa.txt
我正在尝试找到一种方法来转义 bash 脚本中 sed
命令中的美元符号。我在这里找到了大量的答案,这些答案说你需要连续放置四个反斜杠才能转义该标志。我也试过带有两个反斜杠的版本,但出于某种原因,我无法让它工作。有人可以告诉我我做错了什么吗?
假设您在 /home/Documents
中有一个名为 aaa.txt
的文件。该文件只有一行文本,即 aaa
。我正在尝试使用此命令替换它(请不要告诉我我可以用不同于行号的方式引用它,因为这只是我正在做的其他事情的简化示例):
sed -i "1ccd /home/userr/$PARAMETER/$METHOD" "/home/userr/Documents/aaa.txt"
我得到的输出是这样的:
cd /home/userr/\/\
这不是我想要的。我想要这个输出,字符串中有美元符号:
cd /home/userr/$PARAMETER/$METHOD
传递给 sed
命令以实现此目的的字符串的正确格式是什么?
您可以使用反斜杠转义美元符号:
sed -i "1ccd /home/userr/$PARAMETER/$METHOD" "/home/userr/Documents/aaa.txt"
文档在这里:https://www.gnu.org/software/bash/manual/html_node/Escape-Character.html
您需要删除双引号,这样 sed
就不会尝试展开它。 sed
无需转义即可正常工作。
$ sed -i '1ccd /home/userr/$PARAMETER/$METHOD' /home/userr/Documents/aaa.txt