grep のみを使用して最初の出現のみを検索する

grep のみを使用して最初の出現のみを検索する

たくさんの単語が書かれたファイルがあり、パターン「xyz」の最初の単語だけを見つけたいとします。同じ行にこのパターンの単語が複数ある場合はどうすればいいでしょうか? -m一致する最初の行のすべての単語を返します。必要なのは grep コマンドだけです。

答え1

デフォルトではgrepパターンに一致するので、パターンが行内に 1 回以上出現する場合は、grepその行全体を印刷します。

フラグを追加すると、パターンが出現する最初の 7 行のみを印刷するように-m 7指示されます。grep

これで望みどおりの動作が実現するはずです (テストはしていません)。

grep -o -m 1 xyz myfile | head -1

編集: @Kusalananda が指摘したように、厳密にはこの-mフラグは必要ありませんが、これを使用すると、grepファイル全体を解析する必要がなくなり、特にファイルが大きい場合は結果がより速く出力されますmyfile

答え2

質問に対する答えは grep のマニュアルページにあります:

grep -m1 'searchstring' file_name

オプション-m<number>が鍵です。-m1最初の一致、-m2最初の 2 つの出現などのみが表示されます。

関連情報