2013-07-28 98 views
-1

在下面的輸出中,我需要搜索具有REGEXX的行,並且在該行中我需要選擇最後一個單詞。在下面的例子中,它是YYY-0。我該怎麼做?選擇具有特定單詞的句子中的最後一個單詞

LOGICAL FILE MODIFIED: 

SYSTEM = x-YYY UNIT = ALU 

PAGE  1 
LOG  LOG  SPARE PHYSICAL   OBJ SYSTEM  UNIT DEVICE/ 
FILE  FILE  FILE FILE    IND NAME  NAME LOGICAL 
NBR NAME & CLASS MODE NAME          FILE 

1FF REGEXX P        1 X-YYY  ALU  YYY-0 


COMMAND EXECUTED 
+3

您使用哪種語言?爲什麼你需要一個正則表達式呢?看起來用簡單(和快速)的字符串函數可以實現同樣的事情。 –

+0

你嘗試了什麼?這不是代碼請求網站。 – FakeRainBrigand

+0

@TimPietzcker該項目中使用的框架,迫使我使用正則表達式 – anotherNovice1984

回答

0

您可以使用多行模式這個模式:

\bREGEXX(?:[^\S\r\n]+\S+)*[^\S\r\n]+(\S+)[^\S\r\n]*$ 

(結果是在第一capuring組)

或多個簡單但更多的回溯:

\bREGEXX\b.*?(\S+)[^\S\r\n]*$ 

注意:因爲蒂姆Pietzcker表明它,你用簡單的字符串函數將會有更好的結果。您可以通過線分割你的文字,並用空格之後,再數組/列表內環路找到REGEXX

+0

得到所需的輸出感謝您的時間。在給出的3個答案中,這個答案與工作解決方案非常接近:^。* REGEXX \ s *。*(\ S +)\ s + $ – anotherNovice1984

1
\bREGEXX\b.*\s(\S+) 

喜歡的東西上面會搜索「REGEXX」,然後捕獲它後面的最後一個非空的字符串。你的最後一個「字」(actially,非空白字符序列)將在捕獲組的情況1.

1

如果AWK就在眼前,你可以試試這個:

awk '/REGEXX/ {print $NF}' 

其中NF是'當前字符串中的字段數'$ 1,$ 2,...,$ NF是空格/製表符分隔的字段。

相關問題