CentOS 5 を使っています。
とある巨大なログファイルがあります。
例えば grep hoge log.txt | tail -1 みたいな事をやっているのですが、これをどうにか高速にできないですかね?
上記だと、ログファイルを全検索しているので効率が悪いです。
(ログファイルはファイルの最後の方に新しい情報が記録されているので、その最新ログが見たいのです)
安易に思いつくのは tac コマンドを使って
tac log.txt | grep hoge | head -1
でもいいんですが、grep で「最初のマッチで終了」してくれるオプションもなさそうです。
何か良い方法があればご教示願います。
(ruby 等でスクリプトを書いても良いのですが、何とかワンライナーで出来ないかなと)
P.S
ちなみに実際の見たい情報は「grep でマッチした前後数行」なので -A や -B オプションを使っています。
No.2ベストアンサー
- 回答日時:
> grep で「最初のマッチで終了」してくれるオプションもなさそうです。
mオプションがそうではないでしょうか。
http://linuxjm.sourceforge.jp/html/GNU_grep/man1 …
この回答への補足
おぉっ!なるほど、そんな感じですね。
時間見つけて試してみます。これで一応 tac コマンド + grep で目的は達成できそうですね。
ただし、-A や -B オプションを使っているので表示は逆になりますが・・・あっ、また tac すれば良いのか!
tac biglog.txt | grep -m 1 -A 2 -B 1 hoge | tac
結果は報告するようにします。
使用しているOSが古い(RHEL3)せいか -m オプションはありませんでした orz
特に困っているわけではないので大丈夫です。
スッキリしました。ありがとうございます。
No.1
- 回答日時:
その「ログファイル」の構成とか「どのくらい高速化することを想定しているのか」にもよりそうだけど, 普通のログファイルなら劇的な高速化はできないと思う. どう頑張っても「ファイルを最後まで読み込む」より速くはならないし, grep がそれより極端に遅いとは思えない.
「100秒かかっているのが 99秒になる」くらいの高速化はできるかもしれんけど.
この回答への補足
説明不足でした。
単純にマッチ行がファイルの先頭付近なのか最後の方なのかで効率は変わります。
仮に先頭付近だった場合、最初の数行でマッチし、そこで処理を終了させればよいので、かなりの効率化になりますよね。
最後の方にあればしょうがないですね。
いづれにせよ、マッチした時点で grep が終了してくれれば良いです。(-l オプションは終了してくれるがマッチ行を出力しない)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux bashでブランク(空白)を検索文字列として指定する方法 1 2022/04/13 22:29
- フリーソフト grep検索では 1 2022/11/01 19:26
- その他(プログラミング・Web制作) bashのgrepで複数の検索、かつスクリプト内で改行する方法を教えてください。 1 2022/10/06 20:09
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- UNIX・Linux bashスクリプトのgrepで3XXの検索の仕方について 2 2022/09/06 21:35
- 教えて!goo 指摘されたので質問です 1 2022/04/17 14:11
- フリーソフト サクラエディタは複数行に渡る文字列の正規表現検索はできますでしょうか? 3 2022/05/05 09:58
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- デスクトップパソコン 「自動修復でPCを修復できませんでした」と表示されPCが起動しないのですが対処法はありますか? 5 2022/05/13 09:16
- UNIX・Linux Linuxのbash環境下です。 1 2022/11/27 12:31
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Linux環境 grepで改行コード(CRLF、LF)を検索できないで
UNIX・Linux
-
TOPコマンドで表示するCPU使用率で100%以上の表示について
UNIX・Linux
-
スクリプトのエラー「unexpected EOF while looking for matching `'」の解決法は?"
UNIX・Linux
-
-
4
grepで日付指定してlogを取り出したい
UNIX・Linux
-
5
sedなどで、特定の文字列の後の文字列を抽出したい
その他(プログラミング・Web制作)
-
6
python エラー
その他(プログラミング・Web制作)
-
7
シンボリックリンクからの被参照を調べたい
UNIX・Linux
-
8
パスワード設定していないユーザーのログイン
UNIX・Linux
-
9
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
10
自動パスワード入力でscpするスクリプトでエラー「Unterminated quoted string」
UNIX・Linux
-
11
Dosブロンプトでtabを出力したい
その他(プログラミング・Web制作)
-
12
シェルで5分前の時間を取得したい
その他(プログラミング・Web制作)
-
13
日本語のエイリアスは "で囲う必要があるのでしょうか"
MySQL
-
14
ddコマンドでイメージをコピーしているのですが、めちゃめちゃ遅いです。
UNIX・Linux
-
15
SQL Plusで項目名が最後まで表示されない?
Oracle
-
16
SELECT FOR UPDATE で該当レコードがなかった場合
Oracle
-
17
bashスクリプトでの文字列から特定文字列の位置特定
その他(プログラミング・Web制作)
-
18
シェルスクリプトでFTPの実行結果を取得するには
その他(プログラミング・Web制作)
-
19
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
20
ファイル内の数字を計算したい、たし算。
UNIX・Linux
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
タバコの味ってライターで変わ...
-
こいつやお前と呼ぶ男性心理は?
-
マッチングアプリで再マッチし...
-
年上の女性と付き合いたいです...
-
マッチングアプリで再マッチし...
-
周りから
-
マッチングアプリでマッチした...
-
なよなよした男性に嫌悪感
-
好きな人がお見合いをします。
-
ログファイルを後ろから検索し...
-
マッチングアプリでマッチした...
-
マッチングアプリについてです...
-
換気扇、窓なしのトイレ
-
初デートのあと返信が極端に遅...
-
上司からすすめられたお見合い...
-
お見合い当日の急な予定変更っ...
-
靴底でマッチに火をつける方法
-
マッチとライター。どちらがコ...
-
ティンダーでLINEを交換してご...
-
親戚の紹介を受けたけど・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
こいつやお前と呼ぶ男性心理は?
-
マッチングアプリで再マッチし...
-
タバコの味ってライターで変わ...
-
マッチとライター。どちらがコ...
-
ログファイルを後ろから検索し...
-
なよなよした男性に嫌悪感
-
気になる人と初デートで嘔吐し...
-
創価学会などの新興宗教信者の...
-
初デートのあと返信が極端に遅...
-
マッチングアプリで再マッチし...
-
未成年はzippo購入不可ですか?
-
太った女性に好かれる男の容姿...
-
年上の女性と付き合いたいです...
-
マッチングアプリについてです...
-
サッカーでのTRMとは何の略
-
【至急】エクセルで複数のファ...
-
結婚相談所のお見合いで一回で...
-
マッチングアプリで医学部の人...
-
恋愛初心者なんですが、マッチ...
-
マッチングアプリでマッチした...
おすすめ情報