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

时间:2017-06-22 06:04:26

标签: linux

我有一个文件,其中有多个模式,结构如下:

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

相同的记录或模式将以不同的时间戳,用户和事件重复多次。

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

<DataRecord>
<TimeStamp>20170620110718-0700</Timestamp>
<User>hhhhh</User>
<Event>gggggg</Event>
</DataRecord>

我使用sed -n&#39; / ggggg /,/ DataRecord / p&#39; &GT;&GT; output.txt但它提供的输出从<Event>gggggg</Event>开始,而不是从<DataRecord>开始直到记录结束。

1 个答案:

答案 0 :(得分:1)

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

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

在上面的命令中,A1表示匹配模式后面的一行,B3表示匹配模式前的3行。