たくさんの単語が書かれたファイルがあり、パターン「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 つの出現などのみが表示されます。