パターンを含む行を出力せずにパターンを含むファイルを一覧表示したいと思います。私はこれがこれを行うために使用できると思いますgrep
。grep
そういう意味ではどう使うべきでしょうか?たとえば、次のコマンドは、すべてのファイルに「stringpattern」(大文字と小文字の区別)を含むすべての行を提供します.txt
。ファイル名(±行番号)だけ知りたいです。
grep -ni stringpattern *.txt
理想的には、文字列/パターンがファイル内で複数回発生する場合は、ファイルに複数行の出力があることを願っています。
答え1
一致するファイルのみが必要な場合:
grep -lie pattern -- *.txt
grepを使用してファイルと行番号だけを印刷することはできないと思います。なぜなら、 option を使うと-n
すべての行に「file:line:match」が印刷されるからです。ファイル名に:
改行文字が含まれていないか含まれていない場合は、パイプを介して必要なものだけをcut
取得できます。
grep -nie pattern -- /dev/null *.txt | cut -d: -f 1,2
/dev/null
*.txt
このオプションは、ファイル名にのみ拡張する場合は必須です。grep
それ以外の場合、ファイル名は印刷されません。 GNU実装を使用するか、互換性のあるGNU実装を使用すると、代わりに/を使用してファイル名を常に印刷することgrep
ができます。-H
--with-filename
答え2
awk '/pattern/{print FILENAME}' *.txt