- ベストアンサー
Linuxコマンドを使って複数日のログから先頭を取得する方法
- Linuxコマンドを使用して、複数日のログファイルから各日の先頭行を取得する方法について説明します。
- 試行錯誤の結果、以下のコマンドで期待する結果が得られました。
- ベストな方法を求めて質問します。指定のログファイルが大規模なため、シンプルかつ高速な実行が望まれます。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- ログファイルを後ろから検索し、最初のマッチで止める
CentOS 5 を使っています。 とある巨大なログファイルがあります。 例えば grep hoge log.txt | tail -1 みたいな事をやっているのですが、これをどうにか高速にできないですかね? 上記だと、ログファイルを全検索しているので効率が悪いです。 (ログファイルはファイルの最後の方に新しい情報が記録されているので、その最新ログが見たいのです) 安易に思いつくのは tac コマンドを使って tac log.txt | grep hoge | head -1 でもいいんですが、grep で「最初のマッチで終了」してくれるオプションもなさそうです。 何か良い方法があればご教示願います。 (ruby 等でスクリプトを書いても良いのですが、何とかワンライナーで出来ないかなと) P.S ちなみに実際の見たい情報は「grep でマッチした前後数行」なので -A や -B オプションを使っています。
- ベストアンサー
- その他([技術者向] コンピューター)
- グループIDからグループ名を取得する方法
グループIDからグループ名を取得したいのですが、 grep グループID /etc/group | cut -d: -f1 | uniq もっと簡単な方法はありますか?
- ベストアンサー
- Linux系OS
- bat処理の実行結果ログ出力方法について
Windows2003Serverで、bat処理でネットワーク共有したHDDにバックアップデータを移動する処理を組込しているのですが、実行される場合、されない場合があるため、実行結果をログ出力したいと思っています。 MV D:TEST.TXT Z:\TEST.TXT >>D:\LOG.TXT として出力しますと、エラーであっても、正常であっても何も出力されませんでした。 コマンドプロンプト上で返される結果(ファイルが存在しない場合、「指定されたファイルが見つかりません」の表示をする等)をログ出力する方法はないでしょうか? ご教授下さい。
- ベストアンサー
- Windows系OS
- grepで日付指定してlogを取り出したい
あるアカウントの maillog を、日付指定して取り出したいんだけど、 以下に何を付け足したりすればいいかわかりません。 そもそも(パイプで?)付け足せば済むことなのかもわかりませんし。。。 grep imap /var/log/maillog | grep アカウント 日付の正しい記述も判らないです。 正しいコマンドや便利な抽出方法があれば教えていただけますでしょうか。
- ベストアンサー
- Linux系OS
- テキストから複数の任意の文字列を含んだ行を抽出したいです
cat test.txt | grep aaabbb とするとaaabbbを含んだ行を抜き出せるんですが、 aaabbbまたはcccdddという文字列を含んだ行を抜き出したいときにはどうすればいいでしょうか? どちらか一方もしくは両方を含んだ行を抜き出してほしいです。 ログを見る際に使いたいのでコマンド一つで出来ると助かります。
- ベストアンサー
- Linux系OS
- BATファイルとタスクでルーターのログを取得
現在、I-O DATAのETX-Rというルーターを使用しています。 ルーターのIPアドレスは192.168.0.1に設定してあります。 このルーターは、ログファイルがhttp://192.168.0.1/system.logに格納されているのですが、 このログファイルをBATファイルとタスクスケジューラ等を使用して、自動保存したいと考えております。 当初、コマンドプロンプトのtypeコマンドを使用して、指定した場所にtxtファイルとして保存する案を思いついたのですが、typeコマンドではURL(http://)を指定して開くことはできないようでした。 startコマンドを使用してURLを指定すれば開くことは可能なのですが、メモ帳で開いてしまうため、txtファイルで出力できません。 ほかにいろいろと過去の掲示板も検索したのですが、同じような質問が見つからなかったため、投稿いたします。 なにか方法がございましたら、ご教授いただければと思います。 よろしくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- uniqとループを使用しないで、文字列のフィルターの方法
表題の件にて、質問です。 bashでshを作成しています。いろいろ試しているのですが、 UNIXのコマンドで、uniqコマンドがありますが、それと同じことをsed又は、awk等を使用して、作成することは可能でしょうか? 作成が可能であれば、記述方法を教えてくださいませ。 ※ループ文を使用しないで、出来るだけ完結なコマンド文にしたい。 例: file.txt 以下中身 ---------------------- AAAA BBBB BBBB CCCC CCCC ----------------------- ↓ AAAA BBBB CCCC の3文字のみを出力したい。 ご存知の方いらっしゃいましたら、ご教示ください。
- 締切済み
- その他(プログラミング・開発)
- 複数の文字列を検索
あるログファイルの文字列を取得して。検索でヒットした文字列行 を返すスクリプトを作成しております。 検索:"OK" 日付 対象行 : OK! Tue Jul 19 文字列"OK"は普通に # grep "OK" ログファイルPath で検索できますが、 文字列と日付を両方引っ掛ける場合は・・・ grep -e "OK" -e env LANG=c date -u +"%a %b $d" ログファイルPath 当然コマンドエラーになります。 dateコマンドから日付を取得して、grepにて引っ掛ける方法を知りたいので すが、お分かりになる方、ご教授お願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- 数100MB単位のログの解析方法
数100MB単位のテキストを解析するには、 どのような手法が考えられますか。 ファイルが大きすぎるため、Terapadや,Vim、VXEditor等のテキストエディタでは、 まともにファイルを開くこともできません。 状況としては、下記のようなフォーマットで記述されているテキストファイルから、 文字列検索して、目視で確認ということがやりたいです。 ------------------ [2011-02-01 12:00:00] Title エラー内容 [2011-02-01 12:01:00] Title エラー内容 ... ------------------ 現状ではCentOSで以下の手順をとっています。 1. grepを使って『error』という文字列で列番号ごと引っ掛ける # grep -b "fault" hogehoge.log > fault.txt 2. lessでログファイルを参照 # less fault.txt 3. 列番号にとんで、目視で確認 OSは、CentOSかWindowsで行える方法が好ましいです。 なにかいい方法があれば教えていただきますでしょうか? 以上、宜しくお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- rdコマンドでログ出力方法
バッチファイルのrdコマンドでログを出力させたいのですが、ログが出力されません エラー出力は出力されるのですが、標準出力が出力されず、困っています 以下フォルダ構成 -sample.bat -test -log.txt 以下、バッチのサンプルです sample.bat rd /s /q test >> log.txt testフォルダは削除されるのですが、ログに処理内容が記述されず困っています。 また、エラー出力 rd /s /q test2 >> log.txt 2>&1 とするとエラー結果がlog.txtに出力されます。 正常に処理されたときの出力方法ご存知の方いらっしゃいましたらご教授ください よろしくお願いいたします
- ベストアンサー
- その他(プログラミング・開発)
お礼
教えていただいたawkスクリプトは最初は何のことやら分かりませんでした。 実行してびっくりしました。期待通りの結果でした。 また、大ファイルでの処理時間計測を行なったところ高速に処理できていました。 ちなみに最終的には後述の内容に書き換えました。 私の質問の1-3の処理は6秒。 それに相当する処理すべてを1発で行い4秒でした。 処理速度の短縮は、元々速かった為大幅な改善とまではいえませんが、 それ以上にawkの特性を活かしたスマートな処理になっていると思います。 このコードでスクリプトを組もうと思っています。 非常に参考になりました。ありがとうございました。 awk '(($1 ~ /^[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]/) && ($1 != old)) { old = $1; print NR, $1, $2 }' log.txt > 00d.txt