linux - Shell脚本在特定单词之后打印一些单词
问题描述
我是 shell 脚本的新手。我有一个日志文件,我只想grep
“经过时间”并在此之后打印数字。
日志看起来像这样 -
Thread:MkdirSUProc workarea:92d70a0a8 cid_working_on:3164187 line:1085 clientIP:10.176.118.170:39575 elapsed time:649 ms additional_info:, Replication info:
stack: fs/server/mapserver/create.cc:1085
fs/server/mapserver/locks.cc:108 lkOwner:0x92c38c0a8
Thread:WriteFile workarea:9dbc7c538 cid_working_on:2402759 line:875 clientIP:10.176.118.170:0 elapsed time:17287 ms additional_info:, Replication info: wa = 0x9dbc816c8
stack: fs/server/mapserver/write/writev3.cc:875
想要输出 -
649
17287
每当我使用时grep
,它都会打印整行。任何帮助和指导将不胜感激。
解决方案
第一个解决方案:这可以在单个中完成awk
,您能否尝试以下操作。
awk 'match($0,/elapsed time:[0-9]+/){print substr($0,RSTART+13,RLENGTH-13)}' Input_file
第二种解决方案:使用字段分隔符尝试:
awk -F'elapsed time:|ms' '$2{print $2}' Input_file
输出如下。
649
17287
推荐阅读
- python - 每个名称有两个值的散点图
- swift - 在结构中过滤结构数组
- reactjs - 为什么尝试导入时无法识别我的组件?
- django - Django ORM - 模型引用另一个模型ManyToMany字段
- excel - 使用 VBA 添加超链接以创建说明选项卡
- mysql - MySQL 对分组 (GROUP BY) 结果使用 ORDER BY
- sql - SQL Server 中的组合
- node.js - 当我使用承诺时无法返回结果
- uicollectionview - 在 UICollectionView 中自动调整单元格大小(全部在代码中)
- angular - 使 Angular 函数等待订阅完成