Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Unix日志中使用特定单词和上面的两行保持一致_Unix_Grep_Logfile - Fatal编程技术网

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

在Unix日志中使用特定单词和上面的两行保持一致,unix,grep,logfile,Unix,Grep,Logfile,我有一个很长的日志文件,其中我只想保留带有单词“change”的行和这行上方的两行。如何在Unix中执行此操作?如果您可以将文件复制到Linux(除非您有cygwin或其他类似的实用程序)并使用grep,则会更容易(我发现)。 命令是:grep-b2更改您的.log 这将查找有更改的行,并包括每个更改行之前的前两行 ===== 你可以在记事本++中获得所需的行,但我还没有找到一个简单的方法来做到这一点,但这是可能的。这完全取决于“长日志文件”的含义,因为这项工作可能需要一些时间: 首先,使用Se

我有一个很长的日志文件,其中我只想保留带有单词“change”的行和这行上方的两行。如何在Unix中执行此操作?

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

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

=====

你可以在记事本++中获得所需的行,但我还没有找到一个简单的方法来做到这一点,但这是可能的。这完全取决于“长日志文件”的含义,因为这项工作可能需要一些时间:

  • 首先,使用Search=>Mark
  • 输入“更改”搜索词
  • 选中“书签行”复选框
  • 单击“全部标记”按钮
  • …此时,所有具有“更改”的行将在左侧显示书签

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

  • 对所有更改行重复步骤6和7,直到覆盖了所有书签的“三元组”(带有更改的行和前面两行)

  • 设置完所有书签后,执行以下操作:Search=>Bookmark=>Remove Unmarked line


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

    失败前的行数是否不同,还是有一个恒定的行数?如果是一个常量,比如总是10行,那么您可以简单地将值更改为-B选项,比如-b10。Git各不相同。还有可能吗?不幸的是,我不相信grep会“回顾”前面的几行。您可能需要简单地使用一个值来获取信息,即使某些行可能不相关。但是,如果这是一种替代方法,您可能可以更改grep搜索,以仅查找任务和失败的行?(假设中间行的条目中也没有“task”或“failed”)我后来还添加了另一个问题:如果我想改进下面的grep,并使用grep命令查找带有单词“failed”的行,并复制上面的所有行,直到它到达带有工作“task”的行(包括该行)?