如何在Mac OSX上的SED中使用PCRE Regex

时间:2016-07-01 19:21:55

标签: regex bash macos sed

我拥有适用于http://regexr.com/的RegEx (\[!\[|!\[)(.*),但是当我尝试将sed-e 's/(\[!\[|!\[)\(.*\)//g'一起使用时,它不起作用。

我找到了一个建议使用-r命令代替-e的答案,但是我使用的是Mac OSX El Capitan,并且-r不是受支持的命令。

我还找到了一个答案,说在Mac OSX上使用-E而不是-r,但这不起作用,并且一位评论者表示他们不是一回事。还建议使用grep代替sed,但我正在添加此搜索并替换为已使用sed的其他几个。

我的代码块看起来像这样,有问题的搜索和替换位于sed...行的末尾:

# Transform the readme
if [ -f readme.md ]; then
    mv readme.md readme.txt
    if [ -f CHANGELOG.md ]; then
        cat CHANGELOG.md >> readme.txt
        rm CHANGELOG.md
    fi
    sed -i '' -e 's/^# \(.*\)$/=== \1 ===/' -e 's/ #* ===$/ ===/' -e 's/^## \(.*\)$/== \1 ==/' -e 's/ #* ==$/ ==/' -e 's/^### \(.*\)$/= \1 =/' -e 's/ #* =$/ =/' -e 's/\*\*//g' -e 's/(\[!\[|!\[)\(.*\)//g' readme.txt
fi

示例我想完全删除以[![开头的第二行:

=== CMB2 Admin Extension ===
[![Build Status](https://travis-ci.org/twoelevenjay/CMB2-Admin-Extension.svg?branch=master)](https://travis-ci.org/twoelevenjay/CMB2-Admin-Extension)  
Contributors:         twoelevenjay  

我还希望它删除以![开头的行,如下所示:
![CMB2](https://plugins.trac.wordpress.org/export/HEAD/cmb2/assets/banner-1544x500.png)

1 个答案:

答案 0 :(得分:2)

  

我想完全删除以[![开头的第二行:

在OSX上sed这应该适合你:

sed -E '/^(\[!\[|!\[)/d'

您不需要使用替换;只需/d即可。