指定期間内のログを表示する方法

このQ&Aのポイント
  • Ubuntuを使用している場合、特定の期間のログを表示する方法について説明します。
  • 指定期間内のログを表示するためには、catコマンドとawkコマンドを使用します。
  • 具体的には、ログファイルをcatコマンドで表示し、awkコマンドを使用して期間の条件を指定します。
回答を見る
  • ベストアンサー

指定期間内のログを表示する方法

現在、Ubuntuを使用しています。 指定期間内のログ(/var/log/syslog)を表示したくてネットで調べた下記コマンドを打ちました。期待通りの結果にはなったのですがなぜそうなるのかがわからないです。 -Fオプションで"-"で文字列を区切った最初の文字($1)を使用して 範囲指定を行っています。この時、$1の中身が純粋な日付のみの文字列(例えば’Apr 23 09:10:44’)であればまだわかるのですが$1の内容は 日付のみの文字列ではありませんでした。なぜ、下記コマンドで範囲指定ができるのでしょうか。 cat syslog | awk -F - '"Apr 23 09:10:44" < $1 && $1 <= "Apr 23 09:12:47"'

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

  • ベストアンサー
回答No.1

Ubuntuって、そんなに仕様が変わったのですか? 普通なら awk '{if ($1 == "Apr" && $2 == "23" && ( $3 >= "09:10:44" || $3 <= "09:12:47" )) { print $0 }}' /var/log/messages で、十分のはずなのですが・・

unko347
質問者

お礼

ご回答ありがとうございます。 教えていただいたコマンドの方がしっくりしました。

その他の回答 (1)

回答No.2

VirtualBoxで飼っているUBUNTUで検証してみました。 /var/log/messagesが/var/log/syslogに変わっているだけで、 私の記載したコマンドで無事表示されました。

関連するQ&A

  • 指定した列のみ置換する方法は?

    スペースで区切られているログで /をスペースにかえたいのですが 1列目には日付の/があるのでそれはそのままにしておきたくて4列目にある/をスペースにしたいのです! 普段はawkを使ったりしています。 誰か教えてください!

  • awkのセパレータ指定について

    awkのセパレータ指定について教えてください。 以下のようなファイルがありそれを'||'区切りで出力したいです。 下記のような指定をしてみたのですが、 うまくいきませんでした。 cat text | awk -F '||' '{print $1}' [test.txt] aaa||bbb||ccc [期待する結果] print $1 → aaa print $2 → bbb print $3 → ccc どなたか教えてください。 よろしくお願いします。

  • /var/log/lastlogが文字化けする

    RedHatLinux7.0をadsl常時接続で使用しています。 adslモデムのdataLED点滅がネットに繋いでいない時でも多かったので、不審に思い、調べてみるとipchainsの設定が甘かったようでした。 雑誌に載っていたのをそのまま使ったのですが、その雑誌が古かったためか、telnet等のポートもあいていました。 これらは修正し、今は必要以外のポートは全て閉めています。 logを見てみたのですが、#cat /var/log/lastlogは文字化けして読めませんでした。 (^@が連続して出ています。以前は確か読めました。) この他のログは、secure、spoolerは空で何も入っていません。(secure.1は大丈夫です) message,maillog,cron,boot.logは正常な様です。 クラッカーによってlogが正常にできなくなったと考えてよいのでしょうか? /etc/init.d/syslogを見てみたのですが、/etc/syslog.confを読みに行く行が無いような気がします(ハッキリとはわかりません)。 syslog.confには異常ない様です。 あと、tabキーで以前入力したコマンドが出る機能がありますが、一旦ログオフしてしまうと直前の物がでず、随分前に入力したコマンドが出る、というのも気になります(以前は問題なかったと思っています)。 クラッキングについてサーチエンジンでいろいろ見てはいるのですが、はっきりと原因などがわかりません。 よろしくおねがいいたします。

  • awkコマンドに引数を渡す方法

    awkコマンドに対して引数を渡す方法が知りたいです。 例えば以下のようなリストファイルがあったとします。 --------------------------------------- % cat test.lst 454 100 37536 200 32432 300 34q2 400 --------------------------------------- そこで以下のシェルを実行すると --------------------------------------- #!/bin/sh for VAL in 100 200 300 do CNT=`cat test.lst | awk '$2 == $VAL {print $1}'` echo "$VAL : $CNT" done --------------------------------------- awkコマンド内の$VALが引数ではなく文字列として認識されてしまうため、 出力結果が 100 : 200 : 300 : となってしまいます。 100 : 454 200 : 37536 300 : 32432 という結果を出力したい場合(awk内の引数を有効にする場合)どうすればよいでしょうか? awkを使用しない方法もあるかと思いますが、今回はawkを使った方法を知りたいです。 宜しくお願い致します。

  • LIKE検索で範囲指定の方法

    mysql 4.0で、文字列中に日付を埋め込んでいて、LIKE検索でこの日付の範囲指定で結果を取得したいのですが、このようなことは出来るのでしょうか。

    • ベストアンサー
    • MySQL
  • grepで日付指定してlogを取り出したい

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

  • cutコマンドで指定フィールドを抜き出し

    CentOS7を使用しています。 cutコマンドで指定フィールドを抜き出したいと思い下記コマンドを実行しましたがうまくいきませんでした。(3列目以降を抜き出す) 何か間違えてますでしょうか? ps | cut -d ' ' -f 3-

  • lprコマンド(印刷)を実行すると、lprコマンド実行ログを取るように

    lprコマンド(印刷)を実行すると、lprコマンド実行ログを取るようにしたい。 osはCentOSです。このCentOS上からlprコマンドを実行すると 指定されたプリンタから印刷されます。ログも取りたいと思い、 CentOS上にて、/etc/syslog.confに、 lpr.* /var/log/lpr.log を追記し、syslogを再起動させました。しかし、 プリンタからlprコマンドで印刷をしてもログは記録されません。 利用できるファシリティにlprはあるはずなのですが・・・。 プリンタの実行ログを作成するには何か足りない設定があるのでしょうか?

  • sshで他サーバーにログインしつつコマンドを実行

    いつも大変お世話になっております。 かぎ交換済みの他サーバーにsshでログインしつつ、ログからキーワードを指定してデータを取得したいのです。 下記の記述で、ログの内容を取得できるようにはなりました。 ssh user@host1 "cat /logs/session.log | grep 'keyword' | head" しかしながら、項目数の多いフォーマットなので必要箇所だけを絞りたいため【awk】コマンドを使用したいのですが、無視されるようで希望の形になってくれません。 ssh user@host1 "cat /logs/session.log | grep 'keyword' | awk '{print $1, $2, $5}' | head" 「'」を「\"」にしてみたり、順番を入れ替えたりいろいろ試してはいるのですが手詰まりになりました。 解決方法をご存知の方がいらっしゃいましたらお助けください。 よろしくお願いいたします。

  • UNIXで複数のログファイルからエラー文字を探す

    初歩的な質問で申し訳ないのですが、UNIXで複数のログファイルから エラー文字を探して、確認したい次第です。 探したい文字列:E0001 ログファイル:20110823.log 20110824.log 20110825.log等日付名のログファイルがたくさんあります。 grepコマンドを使うといいと思うのですが、ご教授いただけますでしょうか。