为了账号安全,请及时绑定邮箱和手机立即绑定

在sed命令和范围地址中使用不同的分隔符

在sed命令和范围地址中使用不同的分隔符

繁星淼淼 2019-06-04 17:03:23
在sed命令和范围地址中使用不同的分隔符我正在使用shell脚本中的sed编辑文件系统路径名。假设我想替换:/foo/bar有:/baz/qux不过,是苏的s///命令使用正斜杠。/作为限制器。如果这样做,就会看到发出错误消息,例如:▶ sed 's//foo/bar//baz/qux//' FILE sed: 1: "s//foo/bar//baz/qux//": bad flag in substitute command: 'b'类似地,有时我希望选择行范围,例如模式之间的行。foo/bar和baz/qux..再说一次,我不能这么做:▶ sed '/foo/bar/,/baz/qux/d' FILE sed: 1: "/foo/bar/,/baz/qux/d": undefined label 'ar/,/baz/qux/d'我能做什么?
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

您可以使用另一个regex分隔符作为搜索模式,方法是反斜杠:

sed '\,some/path,d'

使用它就像用在s指挥:

sed 's,some/path,other/path,'

不过,您可能希望保护其他元字符;这是使用perl和perl的好地方。quotemeta,或者其他脚本语言中的等价物。

从…man sed:

/regexp/
匹配正则表达式的行regexp.

\cregexpc
匹配正则表达式的行regexp..这个c可以是除反斜杠或换行符以外的任何字符。

s/regular expression/replacement/flags
将替换字符串替换为模式空间中正则表达式的第一个实例。除了反斜杠或换行符以外的任何字符都可以使用斜杠代替斜杠来分隔RE和替换。在RE和替换中,如果RE分隔符前面有反斜杠,则可以将其本身用作文字字符。


查看完整回答
反对 回复 2019-06-04
  • 1 回答
  • 0 关注
  • 625 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信