2012-02-14 122 views
2

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

+0

它是否必须是'sed'?另外,你可能会在http://unix.stackexchange.com/ – Cameron 2012-02-14 18:21:55

+0

得到更好的回应。我相信sed脚本中唯一的可编程开关功能是'-n'开关,如果前两个字符是该脚本开始'#n'。 – potong 2012-02-15 12:19:58

回答

3

您可以尝试在剧本中指定认领的标志,说:

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

,然后告诉管理员身份运行该脚本是(chmod a+x它第一次,然后./script.sed),因此家当线用于找到合适的翻译。

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

+0

我认为你需要-rf ​​..也许? – vmpstr 2012-02-14 18:28:32

+0

你是对的,谢谢! – 2012-02-14 18:32:29

1

我想回答你的问题是“不”,但,如果这是GNU sed,那么你可能真的不需要扩展正则表达式,因为基本的正则表达式的GNU sed的实现实际上支持真正的POSIX BRE所不具备的ERE功能。诚然,结果是令人难以置信的,痛苦的反斜杠— ERE的s/(a|b+|cd?)/e/g成为BRE的s/\(a\|b\+\|cd\?\)/e/g —但它的工作原理。