web-dev-qa-db-ja.com

Macターミナルコマンド-文字列を検索し、周囲の行と共に印刷する

私はack、sed、grepを使用してディレクトリ内のファイルを検索し、特定の文字列を見つけることを試みています。データベースファイルを調べて、パスワードがクリアテキストで表示されているかどうかを確認しています。これまでのところ、私はこのコマンドを使用することができました:grep -Ri "search_string"/path_to_Folder

ただし、これは文字列を含むファイルのみを出力します。さらに一歩進んで、文字列の周りの行を出力したいので、各ファイルに入って検索する必要はありません。

私はそれが理にかなっていると思います。どうもありがとうございます。

2
user3324136

私があなたを正しく理解しているなら、

文字列の周りの行を出力します

次のように、grepの-C(コンテキスト)オプションを使用できます。

grep -aRi -C 1 "search_string" /path_to_Folder

これは、一致ごとに3行を出力します。一致の前の行、一致する行、および一致の後の行です。

データベースファイルはバイナリなので、ファイルをテキストとして扱うために、grepの-aフラグも必要です。

サンプルの実行:

$ grep -aRi jeff *
a/b/c/i:jeff
a/b/i:jeff
a/i:jeff
i:jeff

$ grep -aRi -C1 jeff *
a/b/c/i-hi
a/b/c/i:jeff
a/b/c/i-bye
--
a/b/i-hi
a/b/i:jeff
a/b/i-bye
--
a/i-hi
a/i:jeff
a/i-bye
--
i-hi
i:jeff
i-bye
2
Jeff Schaller