我想删除包含路径的文件中的一行。应该删除的路径存储在bash脚本中的变量中。
在某处,我读到允许文件名包含* nix系统上除“/”和“\ 0”之外的任何字符。 由于我不能为此目的使用“/”(我有路径),我想使用nul字符。
我尝试了什么:
#!/bin/bash
var_that_contains_path="/path/to/file.ext"
sed "\\\0$var_that_contains_path"\\0d file.txt > file1.txt #not working
sed "\\0$var_that_contains_path"\0d file.txt > file1.txt #not working
我该如何使这项工作?提前谢谢!
答案 0 :(得分:0)
由于文件名可以包含至少十几个对sed具有特殊含义的不同字符(.
,^
,[
,仅举几例),正确的方法是这样做是为了在搜索字符串中将它们全部转义:
Escape a string for a sed replace pattern
因此,对于搜索模式(在本例中为:路径),您需要以下表达式:
the_path=$(sed -e 's/[]\/$*.^|[]/\\&/g' <<< "$the_path")