最初の一致を印刷してgrepで停止する方法
grep
は、コンテンツの照合に使用されるLinuxの検索ユーティリティです。デフォルトでは、一致する行が出力されますが、これには多くの出力が含まれる可能性があります。最初の一致のみに関心がある場合は、出力を最初の行のみに制限できます。
grep-mで出力を制限する
コマンドgrep
には-m
or オプション--max-count
があり、この問題を解決できる場合がありますが、期待どおりに機能しない場合があります。
このオプションgrep
は、N個の一致する文字列を見つけた後、一致を停止します。これは、出力を単一の文字列に制限し、常に最初の一致を含むため、非常に効果的です。-n
行番号を出力するフラグを使用してこれをテストできます。
grep -m 1 "foo"file
ただし、これには注意が必要ないくつかの欠点があります。N試合後に停止するのではなく、N行後に停止します。これによりgrep
、各行に複数の一致が発生します。これ-o
は、新しい行に各一致を出力するフラグとともに使用すると問題になる可能性があります。
また、ファイルあたりN行しかないため、複数のファイルで使用すると、ファイルごとに最初に一致する行が出力されます。
ヘッドを使用してgrep出力を制限する
別の方法は、出力を別のコマンドにパイプすることhead
です。これは、N行の後に入力をカットするだけです。 ただし、一致するものが早期に見つかった場合は大きなファイルの処理を停止するため、使用-m 1
することにはまだ少し利点があります。grep
grep "foo"file_one.txt | head -1
これは-o
フラグと連動して、ファイルに複数の一致がある場合でも、最初の一致のみを出力します。
ただし、これを複数のファイルで使用する場合は注意が必要です。使用法head
では、任意のファイルの最初に一致した行が出力されます。出力はファイルを処理する順序で印刷されるため、これは問題になるgrep
可能性があります。ファイルをに渡す前に手動で並べ替えない限り、ファイルが処理される順序がわからない場合がありますgrep
。
同様にtail
、最後に一致する行を印刷するために使用することもできます。
コメントを残す