按照出现的顺序从 grep 获取结果?

按照出现的顺序从 grep 获取结果?

我正在尝试 grep 一个日志文件以仅显示与特定会话 ID 匹配的行。到目前为止,它运行良好。但是,当我获取 grep 命令的结果时,我没有按它们出现的顺序获取条目。

如果目录中的日志文件包含以下数据:

SESSNUM=4437 login.jsp
SESSNUM=4437 welcome.jsp
SESSNUM=4437 info.jsp
SESSNUM=4437 logout.jsp

我输入的是:

grep SESSNUM=4437 * 

我得到以下信息:

SESSNUM=4437 logout.jsp
SESSNUM=4437 welcome.jsp
SESSNUM=4437 login.jsp
SESSNUM=4437 info.jsp

有没有办法让 grep 按照日志文件中出现的顺序显示匹配的行?

谢谢!
IVR Avenger

答案1

grep SESSNUM=4437 *

Grep 通常按顺序返回结果。你确定你从正确的日志文件中获取了结果吗?如果你指定所需的日志文件而不是仅仅指定 *,它是否可以正常工作?

更正!目录中应该只有一个文件包含会话编号,但我在 grep 时不一定知道是哪一个。

我建议您使用 grep 的 -H 选项,这样您就可以确保只从一个文件获取内容。这应该是默认行为,但您发布的内容不包含文件名,除非您删除它们。

   -H, --with-filename
          Print the file name for each match.  This is  the  default  when
          there is more than one file to search.

答案2

这是否有可能grep与某些会扰乱顺序的东西有关?

不过,我认为更有可能的是目录中有多个文件。

答案3

把这归咎于我的错误。我通过一个我没有注意到的额外的 grep 来传递 grep,通过将所有内容组合成一个搜索,我能够得到我想要的顺序。

感谢您的建议。

相关内容