常用指令 sort

前言

因為前人把 web server log 產生週期,設定為「每週一次」並且又不是使用 cronolog 來處理,所以就要用 sort 指令來合併且排序了,不過這方法只限於同一個月份合併而以,因為若是跨月例如一月份、二月份、三月份執行合併排序指令的話則合併起來的 Log 內容會變成一月份的 1 日、二月份的 1 日、三月份的 1 日這樣排序下去,不過這樣合併的 Log 對網頁分析軟體來說就會出問題了 (ex. Awstats),所以還是要做苦工每個月每個月來處理吧,當然根本的問題應該是把產生 Log 的方法改正為每天產生並使用 cronolog 來處理才對。




安裝及設定

本次實作利用 sort 指令不單單只是排序而以還運用到的合併的功能,指令功能及參數說明如下:
  • sort:sort lines of text files,排序文字檔案內容。
  • -m:merge already sorted files; do not sort,也就是合併。
  • -t " ":use SEP instead of non-blank to blank transition,分割符號是空格。
  • -k 4:--key=POS1 start a key at POS1,取第四個欄位。
  • -o filename:--output=FILE,輸出到哪個檔案。

了解指令及參數用意後,我們可以執行下列指令就是將 www-access.log.1、www-access.log.2、www-access.log.3 這三個 Apache Log 合併為一個 Log 檔案 (200703.log),而在進行合併前所要排序的欄位則取每個 Log 的第四個時間欄位 [11/Mar/2007:21:19:39 +0800] 這欄來排序。
sort -m -t " " -k 4 -o 200703.log www-access.log.1 www-access.log.2 www-access.log.3



參考