如何顯示文字的正規表示式部分

如何顯示文字的正規表示式部分

我有很多文件,其行看起來像

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僅顯示匹配文字的選項。

相關內容