/var/adm/messagesから当日分のみのログを抽出する方法

OKWave 2007年09月18日 13時00分

  • このエントリーをはてなブックマークに追加
/var/adm/messagesから当日分のみのログを抽出する方法

/var/adm/messagesから当日分のみのログを抽出しようとしています。

そこで、下記のように日付をCシェルの中で取得して、 ログをgrepする際の引数にしようとしています。


 $ date | cut -c 5-10
 Sep  3 (空白2文字)

例えば、


 $ set today=`date | cut -c 5-10`

とすると、


 $ echo $today
 Sep 3 (空白1文字)

となり、 Sepと3の間の空白が1文字分削られてしまい、 grepの引数としては設定したいものとは異なります。

また、grepの引数に空白を含む文字列を与えると、引数が2つと判断され、 これまた引数としては不適格です。

そこで、date | cut -c 5-10 の結果をアポストロフィーで囲み 'Sep  3' の状態でgrepの引数にしたいと思っていますが、 アポストロフィー付きで変数をうまくセットできません。


 $ grep $today /var/adm/messages ($todayの中身は'Sep  3')
上記のようなシェルを実現する方法を教えてください。

または、/var/adm/messagesから当日分のみのログを抽出する方法を 教えてください。

よろしくお願いします。

良回答

変数のインデックスと正規表現をあわせれば比較的簡潔に記せますが、以下の感じではダメでしょうか (* Solaris 環境がないので Linux の /var/log/messages をもとにしてます。/var/adm/messsages と日付部のフォーマットが違っていたらすみません)。


set today=`date`
grep "$today[2]スペース2個分*$today[3]" /var/adm/messages

  • このエントリーをはてなブックマークに追加
関連キーワード
OS

SpecialPR