タグ付けされた質問 「grep」

grepは、もともとUnix用に書かれたコマンドラインのテキスト検索ユーティリティです。正規表現を使用してテキストを照合し、一般にパイプラインのフィルターとして使用されます。このタグは、質問がgrepまたはgrepベースのAPIを使用したプログラミングに関連している場合にのみ使用してください。grepコマンドラインオプション自体の使用またはトラブルシューティングに関する質問はトピックから外れています。

19
色付けされたgrep —ファイル全体をハイライトされた一致で表示
私は見つけるgrepの--color=alwaysフラグは途方もなく有用であること。ただし、grepは一致する行のみを出力します(コンテキスト行を要求しない限り)。印刷する各行に一致があるとすると、強調表示によって機能が追加されません。 私は本当にcatファイルが好きで、パターンマッチが強調表示されたファイル全体を見たいです。 一致があるかどうかに関係なく、読み取られているすべての行を印刷するようにgrepに指示できる方法はありますか?ファイルのすべての行でgrepを実行するスクリプトを作成できることはわかっていますが、これが標準で可能かどうか知りたいと思いましたgrep。
509 bash  shell  colors  grep 



7
Grep RegExからのグループのキャプチャ
sh(Mac OSX 10.6)には、ファイルの配列を調べるためのこの小さなスクリプトがあります。この時点で、Googleは役に立たなくなっています。 files="*.jpg" for f in $files do echo $f | grep -oEi '[0-9]+_([a-z]+)_[0-9a-z]*' name=$? echo $name done これまでのところ(明らかに、シェルの教祖にとって)は、ファイル名が提供された問題と一致したことが判明した$nameかどうかに応じて、0、1、または2を保持grepします。私が欲しいのは、括弧の中にあるものをキャプチャ([a-z]+)し、それを変数に格納することです。 できれば使用しgrepたいだけです。そうでない場合は、PythonやPerlなど、sedまたはそのようなものは使用しないでください。私はシェルが初めてなので、* nixの純粋主義的な角度から攻撃したいと思います。 また、超クールなボヌスとして、シェルで文字列を連結する方法について知りたいのですが?キャプチャしたグループは$ nameに格納されている文字列 "somename"でしたcat $name '.jpg'か、それの最後に文字列 ".jpg"を追加したいと思いますか? 時間があれば、何が起こっているのか説明してください。
380 bash  shell  grep 

8
行の最後の行番号とヒットカウントを表示するようにgrep出力をフォーマットするにはどうすればよいですか?
ファイル内の文字列を照合するためにgrepを使用しています。以下はファイルの例です。 example one, example two null, example three, example four null, grep -i null myfile.txt 戻り値 example two null, example four null, 次のように、一致した行とその行番号を返すにはどうすればよいですか。 example two null, - Line number : 2 example four null, - Line number : 4 Total null count : 2 -cが一致した行の合計を返すことは知っていますがtotal null count、前に追加するように適切にフォーマットする方法や、行番号を追加する方法がわかりません。 私に何ができる?
378 linux  bash  unix  grep 

6
grepの使用中に行番号を取得する
私はgrepを再帰的に使用してファイルの文字列を検索し、一致したすべてのファイルとその文字列を含む行が端末に出力されます。しかし、それらの行の行番号を取得することも可能ですか? 例:現在取得しているのはですが/var/www/file.php: $options = "this.target"、取得しようとしているのは/var/www/file.php: 1142 $options = "this.target";、1142その文字列を含む行番号です。 私が再帰的にgrepするために使用している構文は sudo grep -r 'pattern' '/var/www/file.php' もう1つの質問は、パターンと等しくない場合の結果を取得する方法です。すべてのファイルが好きですが、特定の文字列を持つファイルは好きではありませんか?
360 grep  line 

11
ASCII以外のすべての文字をgrepするにはどうすればよいですか?
非常に大きなXMLファイルがいくつかあり、ASCII以外の文字を含む行を見つけようとしています。私は以下を試しました: grep -e "[\x{00FF}-\x{FFFF}]" file.xml ただし、指定した範囲の文字が含まれているかどうかに関係なく、ファイルのすべての行が返されます。 構文が間違っているのですか、それとも他の何か間違っているのですか?私も試しました: egrep "[\x{00FF}-\x{FFFF}]" file.xml (パターンを一重引用符と二重引用符で囲みます)。
359 regex  unix  unicode  grep 


5
最初の一致のみをgrepして停止
最初の一致のみを返すことを期待して、次の引数を指定してgrepを使用してディレクトリを再帰的に検索しています。残念ながら、それは複数を返します-私が最後に見たとき、実際には2つです。特に望ましい結果が得られない場合、私はあまりにも多くの議論をしているようです。:-/ # grep -o -a -m 1 -h -r "Pulsanti Operietur" /path/to/directory 戻り値: Pulsanti Operietur Pulsanti Operietur 多分これを行うための最良の方法はgrepではありませんか?教えてくれてありがとう
329 grep 

24
すべてのローカルgitブランチを削除する
私は開発プロセスに従って、新しい機能やストーリーカードごとに新しいローカルブランチを作成します。終了したら、ブランチをマスターにマージしてからプッシュします。 怠惰または物忘れの組み合わせが原因で時間の経過とともに発生する傾向があるのは、ローカルブランチの多数のリストが作成され、その一部(スパイクなど)がマージされていない可能性があることです。 すべてのローカルブランチを一覧表示する方法と単一のブランチを削除する方法を知っていますが、すべてのローカルブランチを削除できるgitコマンドがあるかどうか疑問に思っていましたか? 以下はgit branch --mergedコマンドの出力です。 user@machine:~/projects/application[master]$ git branch --merged STORY-123-Short-Description STORY-456-Another-Description STORY-789-Blah-Blah * master リストにあるブランチを削除しようとするとgrep -v \*(以下の回答に従って)、エラーが発生します。 error: branch 'STORY-123-Short-Description' not found. error: branch 'STORY-456-Another-Description' not found. error: branch 'STORY-789-Blah-Blah' not found. 私が使用しています: git 1.7.4.1 ubuntu 10.04 GNU bash、バージョン4.1.5(1)-release GNU grep 2.5.4

28
Windowsに適したgrepツールは何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。私たちは回答が事実、参考文献、または専門知識によってサポートされることを期待しますが、この質問はおそらく議論、議論、投票、または拡張された議論を誘います。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 8年前に閉鎖。 この質問の答えはコミュニティの努力です。この投稿を改善するには、既存の回答を編集してください。現在、新しい回答や相互作用を受け入れていません。 Windows用のgrepツールに関する推奨事項はありますか?64ビットOSを活用できるものが理想的です。 もちろん、Cygwinを知っていて、PowerGREPも見つけましたが、そこに隠された宝石があるかどうか疑問に思いますか?
289 windows  grep 

15
grepを使用して、多数のファイル内の文字列の出現をすべてカウントする
たくさんのログファイルがあります。すべてのファイルで文字列が発生する回数を調べる必要があります。 grep -c string * 戻り値 ... file1:1 file2:0 file3:0 ... パイプを使用して、1つ以上のオカレンスを持つファイルのみを取得できました。 grep -c string * | grep -v :0 ... file4:5 file5:1 file6:2 ... 合計数のみを取得するにはどうすればよいですか?(が返された場合はfile4:5, file5:1, file6:2、8に戻します。)
289 grep 


23
悪用可能なPHP関数
ロックされています。質問はトピックから外れていますが、歴史的に重要であるため、この質問とその回答はロックされています。現在、新しい回答や相互作用を受け入れていません。 任意のコード実行に使用できる関数のリストを作成しようとしています。目的は、ブラックリストに登録するか、そうでなければ許可しない必要がある関数をリストすることではありません。むしろ、侵入先のサーバーでバックドアを検索するときに役立つ赤旗キーワードのgrepリストを作成しておくとよいでしょう。 アイデアは、c99やr57などの「Webシェル」スクリプトなど、多目的の悪意のあるPHPスクリプトを作成する場合、比較的小さな関数セットの1つまたは複数を使用する必要があるということです。ユーザーが任意のコードを実行できるようにするために、ファイルのどこかにあります。それらの関数を検索することで、何万ものPHPファイルの干し草の山を、より詳細な調査を必要とする比較的小さなスクリプトのセットに、より迅速に絞り込むことができます。 明らかに、たとえば、次のいずれも悪意のある(またはひどいコーディング)と見なされます。 <? eval($_GET['cmd']); ?> <? system($_GET['cmd']); ?> <? preg_replace('/.*/e',$_POST['code']); ?> など。 先日、危険にさらされたWebサイトを検索しましたpreg_replaceが、/eフラグの使用によって危険にさらされる可能性があることに気づかなかったため、悪意のあるコードに気づきませんでした(深刻なのはなぜですか?なぜそこにあるのですか?)。他に見逃したものはありますか? これまでの私のリストは次のとおりです。 シェル実行 system exec popen backtick operator pcntl_exec PHP実行 eval preg_replace(/e修飾子付き) create_function include[ _once] / require[ _once](エクスプロイトの詳細については、マリオの回答を参照してください) ファイルを変更できる関数のリストがあると便利かもしれませんが、99%の確率で、エクスプロイトコードに上記の関数の少なくとも1つが含まれると思います。しかし、ファイルの編集または出力が可能なすべての機能のリストがある場合は、それを投稿してください。ここに含めます。(そしてmysql_execute、それは別のクラスのエクスプロイトの一部なので、私はカウントしていません。)
277 php  security  grep 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.