使用grep在“[ - ”和“ - ]”之间提取文本

时间:2016-02-06 00:31:33

标签: regex grep

我有一个文本文件,其中标记了某些单词/短语

[-sample text-]

{+sample text+}

如何使用grep提取文本中括号内的单词?

1 个答案:

答案 0 :(得分:0)

使用Grep和PCRE支持

您正在描述似乎是字差异格式的内容。使用标准grep很难做到这一点,但使用更强大的正则表达式引擎(如PCRE)很容易做到。

将PCRE(Perl-Compatible Regular Expression)库编译到grep或pcregrep二进制文件中,可以在模式中使用某些类型的零宽度断言。例如,假设您具有以下文件内容:

foo [-sample text 1-] bar {+sample text 2+} baz

您可以通过以下方式获得正确的结果:

$ pcregrep -o '(?<={\+|\[-).*?(?=\+}|-\])' /tmp/foo
sample text 1
sample text 2