web-dev-qa-db-ja.com

bashの日付フィールドでログを並べ替える

持ってみましょう

126 Mar  8 07:45:09 nod1 /sbin/ccccilio[12712]: INFO: sadasdasdas
  2 Mar  9 08:16:22 nod1 /sbin/zzzzo[12712]: sadsdasdas
  1 Mar  8 17:20:01 nod1 /usr/sbin/cron[1826]: asdasdas
  4 Mar  9 06:24:01 nod1 /USR/SBIN/CRON[27199]: aaaasdsd
  1 Mar  9 06:24:01 nod1 /USR/SBIN/CRON[27201]: aaadas

この出力を日付と時刻のキーでソートしたいと思います。

どうもありがとうございました。

マーティン

22
Mejmo

GNU sort:sort -k2M -k3n -k4

  • -k2M月ごとに2番目の列でソートします(この方法では、「3月」が「4月」の前に来ます)。
  • -k3n数値モードで3列目でソートします(「9」が「10」の前に来るように)
  • -k4は4番目の列でソートします。

詳細を参照してください マニュアル内

35
user332325

少しオフトピック-しかしとにかく。ファイルツリー内で作業する場合にのみ有用

ls -l -r --sort=time

これから、たとえば町で最も古いバックアップを削除するワンライナーを作成できます。

ls -l -r --sort=time | grep backup | head -n1 | while read line; do oldbackup=\`echo $line | awk '{print$8}'\`; rm $oldbackup; done;
7
hias

日には数値(語彙ではない)ソートが必要なので、sort -s -k 2M -k 3n -k 4,4

詳細を参照してください こちら

6
llhuii

Sortコマンドを使用できます。

cat $logfile | sort -M -k 2

つまり、2番目の列(-k 2)から始まる月(-M)でソートします。

4
bmk