たくさんのファイルをgrepしますか?

たくさんのファイルをgrepしますか?

a.2014-05-06、a.2014-05-07、a.2014-05-08など、巨大な(30000行)ファイルがたくさんあると想像してみてください。

以下を使用して1行の単語を見つけることができることを知っています。

grep "word" a.*

まず、単語を検索するために2番目のファイルを開く前に、各ファイルを開いて閉じると思いますか?これはうまくいきますか?そうでなければ、より効率的な方法はありますか?

2. どのファイルで単語が見つかるかを確認するには?例:
a.2014-05-06に以下がある場合:

a
bx
.
.

a.2014-05-07:

by
.
.

a.2014-05-08:

c
.
.

私たちは次のことを行います。

grep "b" a.*

出力は次のとおりです。

bx
by

私は次の出力が欲しい:

bx  a.2014-05-06
by  a.2014-05-07

ベストアンサー1

~からman grep:

       -H, --with-filename
           Print the file name for each match.  This is the default when there is
           more than one file to search.

ファイル名を最初に印刷してから一致を印刷します。これは、例の結果に表示される内容ではありません。しかし、問題が発生しない場合は、迅速かつ簡単です。

これは複数の入力のデフォルト値なので、ワイルドカードと一緒に使用すると(例のように)、次の結果が得られます。

$ grep "b" a.*
a.2014-05-06:bx
a.2014-05-07:by

どのタイプのUnix / Linuxを使用しているかについては言及していませんが、この-HオプションはPOSIX仕様にはありませんが、ほとんどの実装で使用できます。

おすすめ記事