加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 用于sed替换的转义文件名

发布时间:2020-12-14 01:36:35 所属栏目:Linux 来源:网络整理
导读:我怎样才能解决这个问题: abc="a/b/c"; echo porc | sed -r "s/^/$abc/"sed: -e expression #1,char 7: unknown option to `s' 变量$abc的替换是正确完成的,但问题是$abc包含斜杠,这会混淆sed.我可以以某种方式逃脱这些斜线吗? 解决方法 GNU manual for se
我怎样才能解决这个问题:

abc="a/b/c"; echo porc | sed -r "s/^/$abc/"
sed: -e expression #1,char 7: unknown option to `s'

变量$abc的替换是正确完成的,但问题是$abc包含斜杠,这会混淆sed.我可以以某种方式逃脱这些斜线吗?

解决方法

GNU manual for sed声明“在任何给定的s命令中,/字符可以被任何其他单个字符统一替换.”

因此,只需使用另一个字符而不是/,例如::

abc="a/b/c"; echo porc | sed -r "s:^:$abc:"

>请勿使用可在输入中找到的字符.我们可以使用:上面,因为我们知道输入(a / b / c /)不包含:.
>小心角色逃脱.

>如果使用“”,Bash将特别解释一些字符,例如`(用于内联执行),! (用于accessing Bash history),$(用于访问变量).
>如果使用”,Bash将从字面上理解所有字符,甚至是$.
>这两种方法可以结合使用,具体取决于您是否需要转义,例如:

abc="a/b/c"; echo porc | sed 's!^!'"$abc"'!'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读