Linux 找到与字符串匹配的模式,并将整个模式发送到输出

Linux 找到与字符串匹配的模式,并将整个模式发送到输出,linux,Linux,我有一个具有以下结构的多个模式的文件: <DataRecord> <TimeStamp>20170620110609-0700</Timestamp> <User>aaaaa</User> <Event>bbbbb</Event> </DataRecord> 20170620110609-0700 AAAA bbbbb 相同的记录或模式将使用不同的时间戳、用户和事件重复多次 我试图扫描文件,找到

我有一个具有以下结构的多个模式的文件:

<DataRecord>
<TimeStamp>20170620110609-0700</Timestamp>
<User>aaaaa</User>
<Event>bbbbb</Event>
</DataRecord>

20170620110609-0700
AAAA
bbbbb
相同的记录或模式将使用不同的时间戳、用户和事件重复多次

我试图扫描文件,找到事件与ggggg值匹配的模式,并将其发送到输出,考虑到我需要输出中的整个模式(如下所示)


20170620110718-0700
啊
gggggg

我使用的是sed-n'/ggggg/,/DataRecord/p'>>output.txt,但它提供从
gggggg
开始的输出,而不是从
到记录结束的输出。

如果您知道必须从匹配的字符串打印多少行,那么可以使用grep命令

   grep -A1 -B3 "ggggg" filename >> output.txt

在上面的命令中,A1表示匹配图案后的一行,B3表示匹配图案前的三行。

Hi Manoj,实际上,A前的行是固定的、清晰的,但B后的行可能会变化,因此并不总是固定的行数。
   grep -A1 -B3 "ggggg" filename >> output.txt