linux - 当变量再次具有特殊字符时,如何在 sed 命令中使用变量?

标签 linux shell sed sh

# test-1,没问题,它删除给定“cshrc”文件中的给定行

sed -i '\:alias reml rm -rf ${ENIP_HOME}/log/*:d' cshrc

# test-2,这不会删除给定“cshrc”文件中的行

LINE="alias reml rm -rf ${ENIP_HOME}/log/*"
sed -i '\:$LINE:d' cshrc 

上面的 sed cmd 不会从 'cshrc; 中删除该行;文件,如何在 test-2 中执行行删除?

最佳答案

在变量扩展方面,单引号(')和双引号(")是有区别的。在您的设置中,只需替换双引号即可通过 LINE= 定义中的单引号,这样 ${ENIP_HOME} 就不会被替换(如果 undefined variable ,则为空字符串)。

您还需要在 sed 行中使用双引号,以便将 $LINE 替换为变量的定义。

关于linux - 当变量再次具有特殊字符时,如何在 sed 命令中使用变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37988033/

相关文章:

bash - 无法使用 Cron 删除文件

linux - 仅在不存在时添加换行符

regex - sed/正则表达式 : How to match a '<' or '>' in a string

c - 串行通信重置/etc/profile (linux)

php - 将 HTML/PHP 从 Windows 保存到 Linux 的复杂性 - 换行解决方案不起作用

linux - mincore 系统调用在用户态应用程序中有何用途?

php - 使用wget向php发送数据

bash - "echo exit |"中的 "echo exit | sqlplus user/pass@ora_instance @file.sql"的用途是什么?

windows - 在 Windows 机器上练习 Unix

linux - 根据行号排除/忽略(不删除)第一行和最后一行