我有很多文件,其行看起來像
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.
答案2
我認為 XY 和 YZ 是相同的,我將它們視為 XY
egrep "XY[0-9]{2}_[0-9]{4}" filename -o
關鍵是-o
僅顯示匹配文字的選項。