-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
4

3 回答 3

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

像上面这样的东西会搜索“REGEXX”,然后捕获它后面的最后一个非空白字符串。您的最后一个“单词”(实际上是非空白字符序列)将在捕获组 1 中可用。

于 2013-07-28T19:13:05.283 回答
1

如果 awk 在手边,你可以试试这个:

awk '/REGEXX/ {print $NF}'

其中NF是当前字符串中的“字段数”,$1、$2、...、$NF 是空格/制表符分隔的字段。

于 2013-07-28T19:24:39.813 回答
0

您可以在多行模式下使用此模式:

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

(结果在第一组)

或更简单但有更多回溯:

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

注意:正如 Tim Pietzcker 建议的那样,使用简单的字符串函数可以获得更好的结果。您可以按行拆分文本,然后按空格拆分,然后在数组/列表中循环以查找REGEXX

于 2013-07-28T19:15:19.577 回答