我有一个文件,其中有多个模式,结构如下:
<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>
开始直到记录结束。
答案 0 :(得分:1)
如果您知道必须从匹配的字符串打印多少行,那么您可以使用grep命令
grep -A1 -B3 "ggggg" filename >> output.txt
在上面的命令中,A1表示匹配模式后面的一行,B3表示匹配模式前的3行。