要求 sed 忽略所有特殊字符

要求 sed 忽略所有特殊字符

我使用以下代码来删除一行:

sed -i "0,/$DELETE_THIS/{/$DELETE_THIS/d;}" file.txt

但如果变量DELETE_THIS包含特殊字符,例如./等,则此代码将失败*...

有没有办法告诉sed忽略所有特殊字符并将它们用作基本文本?

答案1

  • 您在 中有一个字符串$DELETE_THIS,您希望以按字面意思处理它的sed方式传递该字符串。sed

  • 为此,您必须引用所有对 有意义的字符sed

  • 在它们前面加一个反斜杠。例如,使用 Bash 语法:

    DELETE_THIS="$(<<< "$DELETE_THIS" sed -e 's`[][\\/.*^$]`\\&`g')"
    
  • 例如,这将转换^ab[c-d]\ef$\^ab\[c-d\]\\ef\$.

相关内容