2015-04-02 82 views
0

我在bash中很糟糕,需要编写脚本来查找.log文件中正则表达式的最后一个实例。并返回整个线路。这可能与sed或我必须使用awk?在文件中搜索正则表达式的最后一个匹配文件

谢谢!

+1

这两个都是可能的,但最简单的方法是使用'grep regex file |尾巴-n 1' – 2015-04-02 16:05:20

+1

它可能与bash,sed或awk。如果您想要了解它,我肯定这里的人会乐意帮助您调试您的工作。 – ghoti 2015-04-02 16:05:37

+0

@thatotherguy谢谢,尾巴-n 1做了什么? – Gus 2015-04-02 16:08:03

回答

1

只要找到所有比赛用grep并获得最后一个与tail

grep regex file | tail -n 1 
1

愿意这样做:

sed -nr '/YOUR_REGEXP/h; ${g;p}' INPUT_FILE 

grep的将被存储绝对无用数据消耗你的记忆:你不需要所有匹配除了最后一个,但它将被存储在内存中,但只有最后一个匹配/匹配将被打印尾-n1。 是的,GNU sed比grep更快,支持更复杂的正则表达式。

+0

Protip:始终保持一种民间色调,以防万一你错了。在10万行(693MB)与150k匹配行(11MB)的情况下,您的解决方案使用1MB rss和8秒,而我的使用1.5MB rss和2秒。即您的速度降低四倍,极大节省内存。 – 2015-04-02 18:38:51

相关问题