rɑː*_*dʒɑ 6 grep regular-expression
我有一个用于会话 ID 提取的正则表达式:
[root@docker tmp]# grep -oE "\[[0-9].+\]" logfile
[113a6d9e-7b06-42c6-a52b-7a4e4d2e216c]
[113a6d9e-7b06-42c6-a52b-7a4e4d2e216c]
[root@docker tmp]#
Run Code Online (Sandbox Code Playgroud)
如何从输出中隐藏方括号?
不要使用extended-regex grep ( -E
),而是使用perl-regex grep ( -P
),带有后视和前瞻。
$ grep -oP "(?<=\[)[0-9].+(?=\])" logfile
113a6d9e-7b06-42c6-a52b-7a4e4d2e216c
113a6d9e-7b06-42c6-a52b-7a4e4d2e216c
Run Code Online (Sandbox Code Playgroud)
此处,(?<=\[)
表示应该有一个前面的\[
,并(?=\])
表示应该有一个后面的\]
,但不要将它们包含在匹配输出中。