如何将包含斜杠的变量传递给sed

如何将包含斜杠的变量作为模式传递给sed?


例如,如果我有以下变量:


var="/Users/Documents/name/file"

我想这样传递sed:


sed "s/$var/replace/g" "$file"

但是我得到了错误。我该如何解决这个问题?


墨色风雨
浏览 593回答 3
3回答

潇潇雨雨

使用替代的正则表达式定界符,因为sed您可以使用任何定界符(包括控制字符):sed "s~$var~replace~g" $file

jeck猫

一个纯bash的答案:使用参数扩展来反斜杠转义变量中的任何斜杠:var="/Users/Documents/name/file"sed "s/${var//\//\\/}/replace/g" $file
打开App,查看更多内容
随时随地看视频慕课网APP