我有一个日志文件,其中包含日期、时间,然后报告每个错误。每个错误都从日期时间模式开始。我在shell脚本中获得一个id作为参数,并希望将带有相应id的错误报告放到一个新文件中。我是新的打击和尝试使用grep和削减,但grep不超过一个字符。另外,逐行读取和搜索键是不可行的,因为id在错误报告后出现2-3行,用于特定id的启动。帮帮我!谢谢。
下面是日志的示例。
2015-09-25 03:34:40 ................<event>
<id>xxx</id>
<msg>.......: ErrorName1 ===
............
..........
.....
</event>
2015-09-25 03:34:42 .................<event>
<id>yyy</id>
<msg>.......: ErrorName2 ===
............
..........
.....
</event>编辑:所有错误都没有相同的行数,有些事件具有相同的错误id。因此,如果我请求特定的错误id,所有这些具有相同错误id的事件都应该放在不同的文件中。
发布于 2015-09-25 11:04:29
不知道你是不是真的在“分裂”这个文件。根据你的描述,你试图提取其中的一部分给出一些身份。如果您的每个事件都有相同的行数(如示例数据中的行数),那么您将很好地处理:
<your_file grep -B 1 -A 5 '<id>your_id</id>'其中-A n表示匹配前的n行a,-B n表示匹配前的n行b。
发布于 2015-09-25 12:03:47
awk可以帮忙。
awk '{if ($0~/"<event>"/)k=1;if (k==1)print $0;if ($0~/"</event>"/)k=0}' inputfile > outputfilehttps://stackoverflow.com/questions/32780089
复制相似问题