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

IVR*_*ger 2 shell grep unix-shell

我正在尝试 grep 日志文件以仅显示与某个会话 ID 匹配的行。到目前为止,它工作得很好。但是,当我获得 grep 命令的结果时,我没有按照条目出现的顺序获得条目。

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

SESSNUM=4437 login.jsp
SESSNUM=4437 welcome.jsp
SESSNUM=4437 info.jsp
SESSNUM=4437 logout.jsp
Run Code Online (Sandbox Code Playgroud)

我输入:

grep SESSNUM=4437 * 
Run Code Online (Sandbox Code Playgroud)

我得到这个信息:

SESSNUM=4437 logout.jsp
SESSNUM=4437 welcome.jsp
SESSNUM=4437 login.jsp
SESSNUM=4437 info.jsp
Run Code Online (Sandbox Code Playgroud)

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

谢谢!
IVR复仇者联盟

Zor*_*che 7

grep SESSNUM=4437 *
Run Code Online (Sandbox Code Playgroud)

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

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

我建议您使用 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.
Run Code Online (Sandbox Code Playgroud)