如何在 sed 命令中使用变量

如何在 sed 命令中使用变量

我正在尝试跑步

sed -i "/$variable/c \$variable1' file.txt

但它没有显示文件中的任何更改:file.txt

但同样的命令,没有变量就可以正常工作:

sed -i "/variable/c \variable1' file.txt

答案1

像这样做:

sed -i "/$variable/c \\${variable}1" file.txt

变化:

  1. \如果a 之前有一个$,它会使 shell$在字符串中插入一个文字。相反,添加一个额外的内容\来转义第一个,以便\打印 at 文字。

  2. 如果变量后面紧接着有字母或数字,请将名称括起来,{...}以区分变量和不存在的变量variable1(如果变量不存在,shell 会将其扩展为空,而不是寻找更短的名称)。

  3. 与您的引用保持一致,您以 a 开头",所以不要以 a 结尾'!无论如何,变量只能在双引号内扩展。

请注意,为了调试这样的事情,您可以使用echo,查看输出,下面的命令将显示出了什么问题:

echo sed -i "/$variable/c \$variable1" file.txt

将其与;

echo sed -i "/$variable/c \\${variable}1" file.txt

相关内容