/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

ZDNET Japan 記事を毎朝メールでまとめ読み(登録無料)

ZDNET Japan クイックポール

注目している大規模言語モデル(LLM)を教えてください

NEWSLETTERS

エンタープライズ・コンピューティングの最前線を配信

ZDNET Japanは、CIOとITマネージャーを対象に、ビジネス課題の解決とITを活用した新たな価値創造を支援します。
ITビジネス全般については、CNET Japanをご覧ください。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]