0

我不知道如何grep在这个文件中找到我想要的行:

8.txt  07:34:12 -> CONTENT START
8.txt  07:34:42 <-CONTENT END
8.txt  07:35:08 -> CONTENT START
8.txt  07:36:33 <-CONTENT END
8.txt  07:57:51 -> CONTENT START
8.txt  07:57:52 -> CONTENT START
8.txt  07:58:25 <-CONTENT END
8.txt  07:58:36 -> CONTENT START
8.txt  07:59:24 <-CONTENT END
8.txt  08:20:23 -> CONTENT START
8.txt  08:21:22 <-CONTENT END
8.txt  08:22:44 -> CONTENT START
8.txt  07:34:12 -> CONTENT START
8.txt  08:23:07 <-CONTENT END
8.txt  08:26:35 -> CONTENT START
8.txt  08:27:24 <-CONTENT END
8.txt  08:29:53 -> CONTENT START
8.txt  08:30:28 <-CONTENT END
8.txt  08:30:59 -> CONTENT START
8.txt  08:31:21 <-CONTENT END
8.txt  08:48:28 -> CONTENT START
8.txt  08:48:56 <-CONTENT END
8.txt  09:13:10 -> CONTENT START
8.txt  09:13:40 <-CONTENT END
8.txt  09:13:52 -> CONTENT START
8.txt  09:14:44 <-CONTENT END
8.txt  09:19:50 -> CONTENT START
8.txt  09:20:28 <-CONTENT END
8.txt  09:27:04 -> CONTENT START
8.txt  09:27:40 <-CONTENT END

如果CONTENT START出现在连续行上,则显示它们。

预期输出:

8.txt  07:57:51 -> CONTENT START
8.txt  07:57:52 -> CONTENT START
8.txt  08:22:44 -> CONTENT START
8.txt  07:34:12 -> CONTENT START

如何才能做到这一点?

4

2 回答 2

4

这不是用于此的grep任务uniq

$ uniq -D -f4 file
8.txt  07:57:51 -> CONTENT START
8.txt  07:57:52 -> CONTENT START
8.txt  08:22:44 -> CONTENT START
8.txt  07:34:12 -> CONTENT START

该选项-D用于显示重复的行并-f4跳过前四个字段。

于 2013-01-05T18:02:02.767 回答
0

如果 CONTENT START 出现在 3 个连续的行上,您不会说该怎么做,所以这可能是也可能不是您想要的:

awk -v s="CONTENT START" '$0~s && p~s{print p ORS $0} {p=$0}' file
于 2013-01-05T18:05:35.067 回答