私はircログ(irssiによって作成された)から日付を解析するための次の簡単なスクリプトを持っています
#!/bin/bash
query=$1
grep -n $query logfile > matches.log
grep -n "Day changed" logfile >> matches.log
cat matches.log | sort -n
次のような出力を生成します。
--- Day changed Tue Jul 03 2012
--- Day changed Wed Jul 04 2012
--- Day changed Thu Jul 05 2012
16:54 <@Hamatti> who let the dogs out
--- Day changed Fri Jul 06 2012
--- Day changed Sat Jul 07 2012
--- Day changed Sun Jul 08 2012
12:11 <@Hamatti> dogs are fun
しかし、私は実際の試合の日付を見つけることだけに興味があるので、それらすべてを除外したいと思います
--- Day changed XXX XXX dd dddd
次の行のタイムスタンプが続かない行。したがって、例は次のように出力する必要があります
--- Day changed Thu Jul 05 2012
16:54 <@Hamatti> who let the dogs out
--- Day changed Sun Jul 08 2012
12:11 <@Hamatti> dogs are fun
役に立たないすべての偽情報を取り除くために。
編集。T. Zeliekeの回答の後、私はこれをもっとワンライナーにすることができることに気づきました。そこで、ログファイルが2回繰り返されるのを防ぐために、次を使用します。
query=$1
egrep "$query|Day changed" logfile |grep -B1 "^[^-]" |sed '/^--$/d'