我使用以下代码来删除一行:
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\$
.