我正在尝试在 Linux 系统上的日志文件中搜索关键字。
如果日志文件的结构出现在下面(它没有,但这是一个很好的例子)并且假设我想找到单词“Hello” 和 hello 上面的日期和时间戳以及所有其他行都在开始下一条记录的换行符中。
这将如何实现。
我唯一能想到的就是 grep Hello -B 1 logfile.log。 这当然会让我在匹配内容之前得到一行,但是新行之后的行呢?还尝试了 grep Hello -B 1 -A 1 logfile.log
不确定如何获得不同的行。请指教。提前致谢。
[日志文件的结构]
2015-01-01 Hello| Bob | Billy| Tommy| 2015-01-01 Hello| Bob | Billy| Tommy| Judy| Richard| Paul| 2015-01-01 Tchau| Bob | Billy| Tommy| Judy| Jerry| Dwight| Phil|
[期望的输出]
2015-01-01 Hello| Bob | Billy| Tommy| 2015-01-01 Hello| Bob | Billy| Tommy| Judy| Richard| Paul|
最佳答案
最简单的方法是使用gnu awk
并通过将RS
设置为空来将数据分成 block 组。
awk -vRS= '/Hello/' ORS="\n\n" file
2015-01-01
Hello|
Bob |
Billy|
Tommy|
2015-01-01
Hello|
Bob |
Billy|
Tommy|
Judy|
Richard|
Paul|
如果组之间的空间不重要:
awk -vRS= '/Hello/' file
2015-01-01
Hello|
Bob |
Billy|
Tommy|
2015-01-01
Hello|
Bob |
Billy|
Tommy|
Judy|
Richard|
Paul|
关于linux - 在 Linux 系统上定位文件中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27934910/