如何将路径名传递给sed

时间:2014-09-09 12:42:22

标签: regex sed

我试图将搜索模式作为sed的路径传递,但它没有采用路径名。它将错误显示为“sed:command乱码”。这是使用过的代码,

sed -e "/$node/s/^/#/" /etc/inittab > /etc/inittab.new && sudo mv /etc/inittab.new /etc/inittab

这里我将搜索模式传递​​为“opt / product / BETA / scp_install / bin / startBETAscp”,我收到错误为“sed:command乱码:/(opt / product / BETA / scp_install / bin / startBETAscp)/ S / ^ /#/“

请建议我,如何将变量的内容用于搜索。

1 个答案:

答案 0 :(得分:3)

使用sed,您可以/pattern/检查正则表达式匹配,/可以是除/ (slash)以外的字符。格式为\@pattern@(此处@为示例)。所以你的行将是:

sed "\@$node@s/^/#/" ....

添加它的工作原理:

kent$ (master|✔) v="a/b/c"

kent$ (master|✔) sed "\@$v@s/^/#/" <<< "foo  
dquote> a/b/c"
foo
#a/b/c