2016-12-29 29 views
1

使用awk,我想用自己的时间戳如何使用awk取出匹配其时间戳的列表?

我试图筛选线

awk '/29/Dec/2016-07:52/' filename 

,但它给错误

AWK:/ 29/DEC/2016-07:52/

AWK:^语法错误

如何取出匹配其时间戳的列表?

+2

你应该逃避'/'的日期,如:'/ 29 \ /月\/2016-07:52 /'。 –

回答

1

这是因为/所以你需要逃避它被用来作为分隔符:

awk '/29\/Dec\/2016-07:52/' filename 

另外,如果你不想担心逃跑,你可以使用不同的变体:

awk '$0 ~ "29/Dec/2016-07:52"' filename 

当然,如果包含这些字符串的行提取之后是简单的,awk可能是矫枉过正 - 你可以用grep做到这一点:

grep -F '29/Dec/2016-07:52' filename 
+0

只是想在这里在这里加入paxdiablo的回答,“/”具有特殊的意义,所以我们必须使用转义序列告诉awk中不采用它的特殊意义,我们都在寻找相同的字符“/”不为它的特殊含义。 – RavinderSingh13

+1

这第二个是不是非正则表达式的变体,它只是使用动态正则表达式,而不是一个恒定的正则表达式。非正则表达式的变体将是'AWK '指数($ 0, “29/DEC/2016-07:52”)' filename'。 '/'是常量的正则表达式分隔符,而不是分隔符。 –

+1

@EdMorton,感谢您的评论,已经调整了适合的答案。 – paxdiablo