• ベストアンサー

grepで日付指定してlogを取り出したい

あるアカウントの maillog を、日付指定して取り出したいんだけど、 以下に何を付け足したりすればいいかわかりません。 そもそも(パイプで?)付け足せば済むことなのかもわかりませんし。。。 grep imap /var/log/maillog | grep アカウント 日付の正しい記述も判らないです。 正しいコマンドや便利な抽出方法があれば教えていただけますでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • lunarosa
  • ベストアンサー率73% (30/41)
回答No.2

やり方は人それぞれに色々あると思いますが一例として e.g. 「3/2」の「あるアカウント」さんを含む行を maillog から抽出 egrep '^Mar[ ]+2' /var/log/maillog | grep 'あるアカウント'  や awk 'BEGIN{ORS="\n\n"}/^Mar[ ]+2/ && /あるアカウント/' /var/log/maillog  など

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

>ls -al | grep Jan | grep 26 >としますと、ターミナルに何も帰ってきません。 >ls -al | grep Jan >では当然問題ないです。 ls -al | grep Jan の出力結果に 26 が含まれなければ何も出ません。 >日付を指定するフォーマットって有るのでしょうか? grep は、指定した文字列(正確には正規表現ですが)を含む行を抽出するコマンドです。ですから、 less /var/log/maillog でログを表示させてみて、自分が抽出したい文字列を決めてそれを指定すればいいです。 grep はそれが日付だとかユーザ名だとかは認識せず単に文字列として扱います。

  • sapporo30
  • ベストアンサー率33% (905/2715)
回答No.1

パイプでどんどん付け足していって問題ないですよ。 たとえば ls -al | grep Jan | grep rwx | grep 26 であれば、ls -al コマンドの結果から Jan が含まれていて rwx という文字列が含まれていて、 25 という文字列が 含まれている行を取り出してくれます。 試行錯誤しながらやれば、だいたいコツがつかめますよ。

ggenelove
質問者

補足

ご回答ありがとうございます。 こちらの設定の問題なのかも知れませんが、仮に ls -al | grep Jan | grep 26 としますと、ターミナルに何も帰ってきません。 ls -al | grep Jan では当然問題ないです。 日付を指定するフォーマットって有るのでしょうか? YYYY/MM/DD や DD/MM/YYYY でもだめでした。 あと、非常に一歩的なお願いなので申し訳ないのですが、 maillog の中身を表示させる方向性でコマンドを教えていただけると助かります。 当方あまり詳しくないので、見当違いなお願いでしたらごめんなさい。