2014-10-28 109 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