如何显示文本的正则表达式部分

如何显示文本的正则表达式部分

我有很多文件,其中的行看起来像

lotsofblah/XY##_####_morefoo

其中 # 是数字。现在我只想显示部分

YZ##_####

在 bash 中,每个当然都在一个新行中。

答案1

假设您希望 XY 是任意两个字母......

就像是

grep -Eo "[A-Z]{2}[0-9]{2}_[0-9]{4}" file

将匹配 [两个字母][两个数字]_[四个数字]

如果您愿意,它可以更精确一些,确保前面有一个 / 后面有一个 _,但这是一个起点。

通过 man grep 把这些放在一起:

-E, --extended-regexp
          Interpret PATTERN as an extended regular expression (see below)

-o, --only-matching
          Show only the part of a matching line that matches PATTERN.

http://www.regular-expressions.info/reference.html

答案2

我认为 XY 和 YZ 是相同的,我将把它们视为 XY

egrep "XY[0-9]{2}_[0-9]{4}" filename -o

关键是-o仅显示匹配文本的选项。

相关内容