在下面的输出中,我需要搜索包含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
答案 0 :(得分:1)
\bREGEXX\b.*\s(\S+)
上述内容将搜索“REGEXX”,然后捕获其后的最后一个非空字符串。您的最后一个'字'(可能是非空字符序列)将在捕获组1中可用。
答案 1 :(得分:1)
如果awk即将到来,您可以试试这个:
awk '/REGEXX/ {print $NF}'
其中NF
是'字段数'在当前字符串中,$ 1,$ 2,...,$ NF是空格/制表符分隔的字段。
答案 2 :(得分:0)
您可以在多线模式下使用此模式:
\bREGEXX(?:[^\S\r\n]+\S+)*[^\S\r\n]+(\S+)[^\S\r\n]*$
(结果在第一个投资组中)
或更简单,但有更多的回溯:
\bREGEXX\b.*?(\S+)[^\S\r\n]*$
注意:正如Tim Pietzcker建议的那样,使用简单的字符串函数可以获得更好的结果。您可以逐行拆分文本,然后按空格拆分,然后在数组/列表中循环查找REGEXX