当变量包含'/'时如何使用sed?

Vis*_*hnu 3 bash sed environment-variables

我有以下行要在脚本中执行,并删除它上面的两行。但是现在我的 $TEST 变量包含像“/DATA/test10”这样的值,而我的变量 ID 包含“10”。我如何将它与 sed 一起使用?

sed -i ":a;N;s/\n/&/2;Ta;/path = $TEST\/$ID/s/.*//;P;D" /collection.txt
Run Code Online (Sandbox Code Playgroud)

l0b*_*0b0 5

如果您只是想将字符串视为文字,sed那么已经有答案了:

escaped_testx="$(sed -e 's/[\/&]/\\&/g' <<< "$TEST"; echo x)"
escaped_test="${escaped_testx%x}"
Run Code Online (Sandbox Code Playgroud)

额外的x是能够处理尾随换行符,否则这些换行符将被命令替换删除。