プロが教えるわが家の防犯対策術!

/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から当日分のみのログを抽出する方法を
教えてください。

よろしくお願いします。

A 回答 (1件)

変数のインデックスと正規表現をあわせれば比較的簡潔に記せますが、以下の感じではダメでしょうか


(* Solaris 環境がないので Linux の /var/log/messages をもとにしてます。/var/adm/messsages と日付部のフォーマットが違っていたらすみません)。

set today=`date`
grep "$today[2]スペース2個分*$today[3]" /var/adm/messages
    • good
    • 0
この回答へのお礼

うまくいきました!自分では気づきませんでした・・・。
ありがとうございます。

お礼日時:2007/09/03 18:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!