Shell

按出現的順序從 grep 獲取結果?

  • August 23, 2017

我正在嘗試 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 復仇者

grep SESSNUM=4437 *

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.

引用自:https://serverfault.com/questions/66777