首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >解析字符串中的名称

解析字符串中的名称
EN

Stack Overflow用户
提问于 2014-04-09 12:55:04
回答 4查看 54关注 0票数 1

有许多服务器日志需要分析。每条日志消息都是一个字符串,我正在循环这些刺。

问题:

我需要查看字符串是否与模式匹配。

一些文本 *some_one_word_name* 已经完成,状态有更多文本

我需要保存单词之间的单词,工作,已经完成。在这种情况下(参见下面),我将保存EgiMmsWellHdr

代码语言:javascript
运行
复制
 Seq_Loading_SOR_to_Landing..JobControl (DSWaitForJob): Job EgiMmsWellHdr has finished, status = 1 (Finished OK)
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-04-09 13:03:43

您可以使用awk:

代码语言:javascript
运行
复制
s='Job EgiMmsWellHdr has finished'
awk -F 'Job | has finished' '{print $2}' <<< "$s"
EgiMmsWellHdr

使用纯BASH:

代码语言:javascript
运行
复制
[[ "$s" =~ "Job "([^[:blank:]]+)" has finished" ]] && echo ${BASH_REMATCH[1]}
EgiMmsWellHdr
票数 2
EN

Stack Overflow用户

发布于 2014-04-09 13:00:48

使用grep

代码语言:javascript
运行
复制
grep -oP ": Job \K.*(?=has finished)" log.file

EgiMmsWellHdr

代码语言:javascript
运行
复制
grep -oP "(?<=: Job ).*(?=has finished)" file

似乎您不支持-P和-o选项,请尝试以下sed命令

代码语言:javascript
运行
复制
sed -n 's/.*: Job \(.*\) has finished.*/\1/p' file
票数 2
EN

Stack Overflow用户

发布于 2014-04-09 13:04:11

尝尝这个,

代码语言:javascript
运行
复制
[root@server1]# str="Seq_Loading_SOR_to_Landing..JobControl (DSWaitForJob): Job EgiMmsWellHdr has finished, status = 1 (Finished OK)"
[root@server1]# echo $str | cut -d ":" -f2 | cut -f3 -d " "
EgiMmsWellHdr
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22963223

复制
相关文章

相似问题

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