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

时间:2015-07-15 12:28:54

标签: regex macos bash sed bsd

我想在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 ([])

任何人都可以帮助我吗?我变得非常绝望。

1 个答案:

答案 0 :(得分:1)

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

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

输入

test = {
blah
test =
{
wut

输出

var test = {
blah
var test =
{
wut