行を照合する前にgrepを使用してファイル名と行番号を表示する方法
grep
は、ファイルの内容またはファイルに渡された入力を検索するために一般的に使用されるLinuxユーティリティです。複数のファイルを検索する場合、特にシェルスクリプトの自動化に使用する場合は、ファイル名と行番号を表示すると便利です。
grepでファイル名を表示する
デフォルトでは、に複数のファイルを渡すと 、わかりやすくするために対応する行の前にファイルgrep
が表示されます。 実際、ファイル名を表示しないフラグをfilename:
使用して、この動作を無効にすることができます。-h
ただし、に1つのファイルのみを渡すとgrep
、デフォルトではファイル名は表示されません。これは、シェルスクリプトを使用して自動化する場合に問題になる可能性があります。これは、ディレクトリ内のファイルの数がわからない場合があり、ファイル名の存在に依存することで自動化が機能しなくなる可能性があるためです。
簡単な解決策は -H
大文字のフラグを使用することです。これは逆-h
のことを行い、入力として渡されるファイルが1つだけの場合でも、ファイル名が常に含まれます。
grep -H "foo"file
このフラグには、別の予期しない便利な効果があります。Unixパイプなどの-H
入力と組み合わせると 、ファイル名の代わりに出力されます。stdin
(standard input):
grepで行番号を表示する
-n
フラグと一緒に使用して、行番号を取得することもできます。
grep -Hn "foo"
POSIX準拠のハック
このフラグ-H
はgrep
POSIXに準拠しておらず、一部のあいまいなUnixベースのオペレーティングシステムでは使用できません。幸いなことに/dev/null
、2番目のファイルを偽の入力として渡して、grep
複数のファイルがあると思わせるハックがあります。
コメントを残す