![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Linux環境 grepで改行コード(CRLF、LF)を検索できないで
UNIX・Linux
-
TOPコマンドで表示するCPU使用率で100%以上の表示について
UNIX・Linux
-
grepで日付指定してlogを取り出したい
UNIX・Linux
-
-
4
sedなどで、特定の文字列の後の文字列を抽出したい
その他(プログラミング・Web制作)
-
5
UMLでの例外処理
その他(プログラミング・Web制作)
-
6
スクリプトのエラー「unexpected EOF while looking for matching `'」の解決法は?"
UNIX・Linux
-
7
有無、要否、賛否、是非、可否、当否…これらの言葉について
その他(教育・科学・学問)
-
8
bashスクリプトでの文字列から特定文字列の位置特定
その他(プログラミング・Web制作)
-
9
リナックスの特殊ファイル「ソケット」を作成する方法はありますか
UNIX・Linux
-
10
シェルで5分前の時間を取得したい
その他(プログラミング・Web制作)
-
11
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
12
grep 検索 検索対象の行と、そのn段下(もしくは上)までの行を合わせて出力したい
UNIX・Linux
-
13
Linux 月を英語表示したい
UNIX・Linux
-
14
formで特定のinputを送信しないようにしたい
JavaScript
-
15
エクセルで、2行おきに1行追加する方法
Excel(エクセル)
-
16
datapumpの実行方法について
Oracle
-
17
シンボリックリンクからの被参照を調べたい
UNIX・Linux
-
18
Teratemマクロ(ttl)のwaitについて
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
こいつやお前と呼ぶ男性心理は?
-
なよなよした男性に嫌悪感
-
太った女性に好かれる男の容姿...
-
お見合いで外見だけで判断する...
-
ログファイルを後ろから検索し...
-
タバコの味ってライターで変わ...
-
恋愛感情がない相手にも自宅住...
-
年上の女性と付き合いたいです...
-
マッチングアプリでマッチした...
-
周りから
-
わたしにはB型の彼氏がいます
-
創価学会などの新興宗教信者の...
-
マッチとライター。どちらがコ...
-
結婚相談所のお見合いで一回で...
-
ExcelでRegExpのFunctionの作成
-
彼氏がTinderで友達とマッチし...
-
マッチングアプリのアドバイス ...
-
低金利時代の資産運用のおすす...
-
サッカーでのTRMとは何の略
-
マッチングアプリで再マッチし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
こいつやお前と呼ぶ男性心理は?
-
タバコの味ってライターで変わ...
-
マッチングアプリでマッチした...
-
マッチングアプリで再マッチし...
-
恋愛感情がない相手にも自宅住...
-
創価学会などの新興宗教信者の...
-
なよなよした男性に嫌悪感
-
マッチングアプリで再マッチし...
-
初デートのあと返信が極端に遅...
-
年上の女性と付き合いたいです...
-
周りから
-
ログファイルを後ろから検索し...
-
マッチングアプリについてです...
-
太った女性に好かれる男の容姿...
-
マッチとライター。どちらがコ...
-
マッチングアプリでマッチした...
-
サッカーでのTRMとは何の略
-
未成年はzippo購入不可ですか?
-
お似合いに見える男女ってどん...
-
気になる人と初デートで嘔吐し...
おすすめ情報