2014-10-28 80 views
0

我在看起来像使用grep或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 = 0 B = 0 C =从第二0日志文件行行,我怎么能实现这个使用grep和awk。好心帮

+2

你可以分享你已经尝试过?如果你确实awk,你通常不需要grep。 – Anton 2014-10-28 05:00:53

+0

嗨@Anton 我已使用 猫2014-10-07_log * | grep -B 1“495274900579805_1020427725460473”以获得上述两条线,我需要提取我从前一篇文章中提到的项目。 – 2014-10-28 05:15:32

回答

0

这里是一个awk版本(你问AWK)

awk '/AM|PM/ && NF--; /a =/ {print "a = "$(NF-6),"b = "$(NF-3),"c = "$NF}' file 
Oct 07, 2014 7:39:10 AM 
a = 0 b = 0 c = 0 

另一个版本:

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 
+0

只是真棒@Jotne像一块蛋糕一样工作。希望我开始在awk上学习我的基础知识 – 2014-10-28 11:47:25

0

你可以试试下面的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 
+0

@Avinash您好 它的工作精美有在具有将被打印的数据的小的变化,我可以得到打印第二行像 ABCD = 495274900579805_10204277254604731:A = 0 B = 0 C = 0 和最后我需要将这些行推送到csv,其中日期应该在第一列中,abcd在第二列中,a在第三列中,b,c在csv中随后的列之后。请问你能帮我吗 – 2014-10-28 05:20:32