bob*_*lan 4 sed regular-expression
我使用以下代码来删除一行:
sed -i "0,/$DELETE_THIS/{/$DELETE_THIS/d;}" file.txt
Run Code Online (Sandbox Code Playgroud)
但如果变量DELETE_THIS包含特殊字符,例如.、等/,则此代码将失败...*
有没有办法告诉sed忽略所有特殊字符并将它们用作基本文本?
您在 中有一个字符串,您希望以按字面意思处理它的方式$DELETE_THIS传递该字符串。sedsed
为此,您必须引用所有对 有意义的字符sed。
在它们前面加一个反斜杠。例如,使用 Bash 语法:
DELETE_THIS="$(<<< "$DELETE_THIS" sed -e 's`[][\\/.*^$]`\\&`g')"
Run Code Online (Sandbox Code Playgroud)例如,这将转换^ab[c-d]\ef$为\^ab\[c-d\]\\ef\$.