【问题标题】:sed script extended regexsed 脚本扩展正则表达式
【发布时间】:2012-03-06 03:07:15
【问题描述】:

我需要编写多个sed 脚本文件。我似乎找不到从脚本中启用扩展正则表达式的方法。这可能吗?我无法使用选项标志,因为脚本需要在不受我控制的外部环境中运行。

【问题讨论】:

  • 必须是sed吗?此外,您可能会在unix.stackexchange.com 获得更好的回复
  • 我认为 sed 脚本中唯一的可编程开关功能是 -n 开关,如果脚本的前两个字符以 #n 开头,则可以打开它。

标签: regex linux unix sed


【解决方案1】:

您可以尝试在脚本 shebang 中指定标志,例如:

#!/bin/sed -rf
# script goes here

然后告诉管理员按原样运行脚本(首先是chmod a+x,然后是./script.sed),这样shebang 行就可以用来寻找正确的解释器了。

您可能需要将/bin/sed 替换为适合您环境的正确路径。不幸的是,您可能无法为此使用/usr/bin/env sed -r(额外的-r 是个问题)。

【讨论】:

  • 我认为你需要 -rf.. 也许?
【解决方案2】:

我认为你的问题的答案是“不”,但是,如果这是 GNU sed,那么你可能并不真的 需要 扩展正则表达式,因为 GNU sed 的基本正则表达式实现实际上支持真正的 POSIX BRE 不支持的 ERE 的特性。诚然,结果是令人难以置信的、痛苦的反斜杠——ERE 的 s/(a|b+|cd?)/e/g 变成了 BRE 的 s/\(a\|b\+\|cd\?\)/e/g——但它确实有效。

【讨论】:

    猜你喜欢
    • 2016-11-11
    • 2017-10-17
    • 2013-06-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-02
    • 2012-08-24
    • 2012-10-19
    • 2016-09-26
    相关资源
    最近更新 更多