Text-Processing

顯示文件前幾行和後幾行的命令

  • March 23, 2021

我有一個包含很多行的文件,每一行在開始時都有一個時間戳,比如

[Thread-3] (21/09/12 06:17:38:672) logged message from code.....

所以,我經常從這個日誌文件中檢查兩件事。

  1. 還給出了具有全域條件和開始時間的前幾行。
  2. 最後幾行,具有退出狀態和一些其他資訊。

是否有任何快速方便的單個命令可以讓我只顯示文件的第一行和最後幾行?

您可以使用sedawk通過一個命令來製作它。但是,您會很快鬆動,原因sed並且awk無論如何都需要遍歷整個文件。從速度的角度來看,最好是製作一個函式或每次組合tail+ head。如果輸入是管道,這確實有不工作的缺點,但是你可以使用程序替換,以防你的 shell 支持它(看下面的例子)。

first_last () {
   head -n 10 -- "$1"
   tail -n 10 -- "$1"
}

然後啟動它

first_last "/path/to/file_to_process"

繼續進行程序替換(僅限 bash、zsh、ksh 等 shell):

first_last <( command )

附言。您甚至可以添加一個grep來檢查您的“全域條件”是否存在。

@rush 關於使用 head + tail 對大文件更有效是正確的,但對於小文件(< 20 行),某些行可能會輸出兩次。

{ head; tail;} &lt; /path/to/file

將同樣有效,但不會有上述問題。

引用自:https://unix.stackexchange.com/questions/48777