首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写正则表达式以捕获方括号之间的字母数字值?

如何编写正则表达式以捕获方括号之间的字母数字值?
EN

Stack Overflow用户
提问于 2022-04-29 08:24:28
回答 2查看 53关注 0票数 0

请在bash中帮助编写下面一行的正则表达式。我的文件中有这样的多行代码,我只想从文件中捕获以下值。我怎样才能做到呢?

被提取的价值-

代码语言:javascript
复制
Y324256
vmigha3
idea

注-要提取的值总是字母数字。左边和右边的方括号总是有我不想提取的数值。

文件看起来是这样的-

代码语言:javascript
复制
2021-05-13 15:35:31,804 [16] [Y324256] [341745] DEBUG Server - End Webservice method GetProcessStatus
2021-05-13 15:35:32,587 [11] [vmigha3] [341749] DEBUG Domain - Reading user permissions from the database
2022-03-03 09:08:10,699 [31] [idea] [80387] INFO Server - Begin Webservice call
2022-04-06 01:18:33,822 [MonitorThread] INFO  - Reading user permissions from the database
2022-04-06 01:18:33,845 [None] DEBUG -Begin Webservice call

代码语言:javascript
复制
grep -oP '\[\K\d*[A-Za-z][\dA-Za-z]*(?=])' file > output_file

但这给了我下面的结果-

代码语言:javascript
复制
Y324256
vmigha3
idea
MonitorThread
None

我想知道是否可以先找到以2022-04-06 01:18:33,845开始的行(这个日期格式),然后捕获第4条记录。

EN

回答 2

Stack Overflow用户

发布于 2022-04-29 15:21:36

假设/谅解:

如果该行中有3x组[...]

  • otherwise,则打印第二个[...]的内容,跳过

行。

awk的一个想法是使用][的双字段分隔符(不需要正则表达式):

代码语言:javascript
复制
$ awk -F'[][]' 'NF>6 {print $4}' file
Y324256
vmigha3
idea
票数 2
EN

Stack Overflow用户

发布于 2022-04-29 14:55:38

必须是grep吗?我是说:

代码语言:javascript
复制
cut -d[ -f3 file | cut -d] -f1

如果必须的话,那么只需匹配括号。

代码语言:javascript
复制
grep -oP '^[^[]*\[[^[]*\[\K[^]]*'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72054925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档