在 Unix 日志中与特定单词和上面两行保持一致

Keep line with specific word and two lines above in Unix log

我有一个很长的日志文件,我只想保留带有单词 'change' 的行和该行上方的两行。我怎样才能在 Unix 中做到这一点?

如果您可以将文件复制到 Linux(除非您有 cygwin 或其他类似的实用程序)并使用 grep,那会更容易(我发现)。 命令将是:grep -B 2 change your.log

这将找到有更改的行,并在每个更改行之前包括前两行。

=====

您可以在 Notepad++ 中获得所需的行,但我(还)没有找到一种简单的方法来做同样的事情,但这是可能的。这完全取决于您所说的 "long log file" 是什么意思,因为这项工作可能需要一些时间:

  1. 首先,使用搜索 => 标记...
  2. 输入 'change' 搜索词
  3. 选中 'Bookmark Line' 复选框
  4. 单击 'Mark All' 按钮。

...此时,所有具有 'change' 的行将在左侧显示一个书签。

  1. 移动到文件顶部,如果还没有的话
  2. 按 F2 跳转到下一个书签
  3. 在左边,点击上面两行也显示为书签(使它们与更改行具有相同的书签指示)

  4. 对所有更改行重复步骤 6 和 7,直到覆盖所有 "triplets" 书签(更改行和前两行)

  5. 所有书签设置完成后,执行:搜索=>书签=>删除未标记的行

有些人可能知道 Notepad++ 中的其他方法,但我已将这些步骤用于其他需要。 F2 有助于在书签之间跳转,因此这可能有助于加快该过程。