与OS X (BSD) sed的匹配模式包括换行符



我想在OSX上使用sed匹配以下模式:

test = {

test =
{

我尝试了很多不同的东西,包括下面这行,但我不明白为什么它不起作用:

sed -n -E -e "s/(^[a-zA-Z_]*[ ]*=[ "''$'n'"]*{.*)/var 1/p" $path

我使用了extquote $'n'来匹配换行符,并在它前面加上一个反斜杠,因为我在互联网上看到了许多帖子。如果我不使用任何(或)组,它也可以工作,但我想使用组。我一直得到以下错误:

sed: 1: "s/(^[a-zA-Z_]*[ ]*=[ 
 ...": unbalanced brackets ([])

有人能帮我吗?

这应该取决于您的确切数据是什么

sed '/[[:alpha:]]* =/{/ *{/!N;//s/^/var /;}' file
输入

test = {
blah
test =
{
wut

输出
var test = {
blah
var test =
{
wut

相关内容

最新更新