在下面的输出中,我需要搜索具有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