选择句子中有特定单词的最后一个单词



在下面的输出中,我需要搜索具有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
bREGEXXb.*s(S+)

类似于上面的内容将搜索"REGEXX",然后捕获它后面的最后一个非空白字符串。您的最后一句"单词"(实际上是非空白字符序列)将在捕获组1中可用。

如果awk就在眼前,你可以试试这个:

awk '/REGEXX/ {print $NF}'

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

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

bREGEXX(?:[^Srn]+S+)*[^Srn]+(S+)[^Srn]*$

(结果在第一个捕获组中)

或者更简单但有更多回溯:

bREGEXXb.*?(S+)[^Srn]*$

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

最新更新