使用grep或awk

使用grep或awk,awk,Awk,我在日志文件中有行,看起来像 Oct 07, 2014 7:39:10 AM x.y.z SEVERE: adding the post (STORY) abcd = 495274900579805_10204277254604731 : a = 0 b = 0 c = 0 我想从第一行获取日期和时间,从第二行获取a=0b=0c=0,我如何使用grep和awk实现这一点。请帮助您可以尝试下面的grep命令 $ grep -oP '.*?(?=\s[^.\s]+\.[^.\s]+\.\S+)

我在日志文件中有行,看起来像

Oct 07, 2014 7:39:10 AM x.y.z

SEVERE: adding the post (STORY)  abcd = 495274900579805_10204277254604731 : a = 0 b = 0 c = 0

我想从第一行获取日期和时间,从第二行获取a=0b=0c=0,我如何使用grep和awk实现这一点。请帮助

您可以尝试下面的grep命令

$ grep -oP '.*?(?=\s[^.\s]+\.[^.\s]+\.\S+)|:\s+\K[^:]*$' file
Oct 07, 2014 7:39:10 AM
a = 0 b = 0 c = 0
更新:

$ grep -oP '.*?(?=\s[^.\s]+\.[^.\s]+\.\S+)|\) *\K.*' file
Oct 07, 2014 7:39:10 AM
abcd = 495274900579805_10204277254604731 : a = 0 b = 0 c = 0

这是一个
awk
版本(您要求的是awk)


另一个版本:

awk '/AM|PM/ && NF--; {n=split($0,a,"abcd");if (n==2) print "abcd"a[2]}' file
Oct 07, 2014 7:39:10 AM
abcd = 495274900579805_10204277254604731 : a = 0 b = 0 c = 0

你能分享你已经尝试过的吗?如果你做awk,你通常不需要grep。嗨@Anton我用了cat 2014-10-07_log*| grep-b1“495274900579805_1020427725460473”来获得上面两行,我需要从我之前的帖子中提取我提到的项目。嗨@Avinash它工作得很好,必须打印的数据有一个小的变化,我是否可以打印第二行,如abcd=495274900579805_10204277254604731:a=0 b=0 c=0,最后我需要将这些行推送到csv,其中日期应在第一列,abcd在第二列,a在第三列,b,c在csv的后续列之后。你能帮帮我吗?这真是太棒了@Jotne工作起来就像小菜一碟。希望我开始学习awk的基础知识
awk '/AM|PM/ && NF--; {n=split($0,a,"abcd");if (n==2) print "abcd"a[2]}' file
Oct 07, 2014 7:39:10 AM
abcd = 495274900579805_10204277254604731 : a = 0 b = 0 c = 0