在grep之后得到一条线的一部分

ran*_*ght 11 unix grep file

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

这条线的格式是

aNumber timestamp commandInformation
Run Code Online (Sandbox Code Playgroud)

我用这个命令

grep LATENCY file.log | grep CMDTYPE=NEW
Run Code Online (Sandbox Code Playgroud)

过滤掉我想要的某些行.我只希望返回部分时间戳和行中的最后9个字符,而不是整行.我怎样才能做到这一点?

Aar*_*lla 11

用途awk(1):

awk ' { print $2" "substr($0,length($0)-8) }'
Run Code Online (Sandbox Code Playgroud)


小智 9

cut 必须做好这份工作

grep something somewhere | grep againsomething | cut -f2 -d' '
Run Code Online (Sandbox Code Playgroud)


Ian*_*cer 6

grep您可以使用-owhich 只输出匹配项而不输出整行来完成这一切。

假设您可以为时间戳和该行的其余部分创建一个正则表达式,您可以简单地添加:

... | grep -o regex  
Run Code Online (Sandbox Code Playgroud)

[为那些登陆此处尝试使用正则表达式提取行的一部分的其他人添加了答案,grep其中正则表达式是他们想要提取的部分。]