首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在grep之后获取行的一部分

问在grep之后获取行的一部分
EN

Stack Overflow用户
提问于 2009-09-24 12:54:54
回答 6查看 29.3K关注 0票数 12

我的unix服务器上有一个很大的文件,我需要从中提取某些部分

行的格式为

代码语言:javascript
复制
aNumber timestamp commandInformation

我使用命令

代码语言:javascript
复制
grep LATENCY file.log | grep CMDTYPE=NEW

过滤掉我想要的某些行。我只想要返回部分时间戳和该行的最后9个字符,而不是整个行。我该怎么做呢?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-09-24 13:05:58

使用awk(1)

代码语言:javascript
复制
awk ' { print $2" "substr($0,length($0)-8) }'
票数 11
EN

Stack Overflow用户

发布于 2009-09-29 20:10:50

cut必须完成这项工作

代码语言:javascript
复制
grep something somewhere | grep againsomething | cut -f2 -d' '
票数 12
EN

Stack Overflow用户

发布于 2009-09-25 16:44:00

这里我要说perl是比awk更好的选择:

代码语言:javascript
复制
perl -ne 'next if ! (/LATENCY|CMDTYPE=NEW/ && /^\d+.*\s+(.*)\s+.*(.{9})$/); print "$2 $3\n";'

正则表达式更健壮,允许您省略与更严格的模式不匹配的行。上面的awk脚本将在substr调用中看到溢出(老实说,我不知道负索引在awk中做了什么),如果您向它提供中断输入,比如日志末尾的部分行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1471514

复制
相关文章

相似问题

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