これは、いくつかの設定ファイルで特定の変数を見つけるときに非常に便利です。
less * | grep some_var
some_var
したがって、すべての設定ファイルを手動で表示することなく値が返されます。いいね!しかし、その価値を知りたいだけでなく、変更したい場合はsome_var
どうすればいいですか?どのファイルにありますか? varとそのファイルが見つかったファイルを表示するless
コマンド(または何でも)を取得するにはどうすればよいですか?grep
マニュアルページを検索しましたが、適切なオプションが見つかりません...
答え1
なぜless
何かをパイプで接続するのですか?これはに変わりますcat
。
grep some_var * | less
フォームの出力を取得します。
filename:this line contains some_var somewhere
-n
オプションを:に渡すと、行grep
番号も取得されます。
filename:42:this line contains some_var somewhere
多くのエディタにはファイル検索機能が組み込まれており、検索結果はその場所でそのファイルを開くことができる行を選択できるウィンドウに表示されます。 Emacsで以下を実行してください。M-x grep
またはその変形の一つです。 Vimで以下を実行してください。:grep
またはその変形の一つです。
答え2
less
実際には、目的の操作を実行するのではなく、ページ付きの形式で長いテキストファイルを表示することです。
grep
ファイルまたはファイルのリストをコマンドライン引数として渡すことができるので、簡単に次のことができます。
grep -H some_var *
-H
このオプションは結果の前に名前を付けるため、次の出力が提供されます。
filename: some_var blah blah
less
スクロールできるようにパイプを使用したい場合は、そうすることができます。
grep -H some_var * | less
多数のファイルを収集するもう1つの提案はack
Debianシステムack-grep
にあります。バイナリファイルを無視してソースツリーをかなり高速に検索するように設計されており、同様の検索を実行するにはより少ないキーストロークが必要です。