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

ファイル内のテキストパターンを検索するコマンドラインツールであるgrepに関する質問。このタグは、grep自体に関する質問、またはgrepコマンドラインツールの使用から生じる問題に関する質問に使用します。

4
/ etc / passwdのgrepを使用してリストされているすべてのユーザーのホームディレクトリを見つける必要があります
このサイトの別の質問と同様の質問があります。個人が/ etc / passwdからgrepまたはawkを使用してすべてのユーザーのリストを見つける必要がありました。それは私にとってはうまくいきましたが、私はそれを翻訳してそれらのホームディレクトリも見つけてリストすることを試みました。私はあなたが一行でそれを行うことができないことをすでに知っているので、私はパイプラインを使用することを知っています。私はオンラインで調査を行いましたが、問題を理解できません。grepを使用して、次のようなことをした場合: grep -oE '^[/*/]$' /etc/passwd ...おそらくエラーになるか、または/ bin / bashファイルも表示されますが、これは私が望んでいるものではありません。ユーザー名とそのホームディレクトリがgrepを使用してリストされているだけです。一部のホームディレクトリには2つ以上の/(スラッシュ)があるため、*が他のスラッシュを文字として表示するかどうかもわかりません。

1
grep --excludeでファイルが除外されない
特定の文字列をdirで検索しています(文字列が存在する場所とファイルのすべてのインスタンスを確認するため)。ただし、特定のファイルを検索から除外したいのですが。 これが起こっていることです $echo "searchstring" > ./old_folder/useless_file $echo "searchstring" > ./new_folder/good_file $grep -r --exclude="old_folder/useless_file" searchstring * ./old_folder/useless_file:searchstring ./new_folder/good_file:searchstring これが私が欲しい出力です- ./new_folder/good_file:searchstring
8 grep  search 

3
grepはファイルがバイナリであるとどのように判断しますか?
よく検索する大きなutf-8テキストファイルを持っていgrepます。最近grep、それがバイナリファイルであると報告し始めました。で引き続き検索できgrep -aますが、どのような変更によってファイルがバイナリであると判断されたのでしょうか。 先月のコピーがあり、ファイルはバイナリとして検出されなくなりdiffましたが、20,000行を超えるため、実用的ではありません。 file 私のファイルを 行が非常に長いUTF-8 Unicode英語テキスト 文字/行/その他を見つけるにはどうすればよいですか。この変更を引き起こしている私のファイルで? 同様の、重複していない質問19907はNULの可能性をカバーgrep -Pc '[\x00-\x1F]'していますが、NULや他のANSI制御装置がないと述べています。

2
grepでグループ区切りとしてmultilineを使用するにはどうすればよいですか?
では、グループマッチの間に何かを書くgrepために使用できます--group-separator。 これは、特に-C Xコンテキスト行を取得するオプションを使用する場合に、どのブロックがあるかを明確にするのに便利です。 $ cat a hello this is me and this is something else hello hello bye i am done $ grep -C1 --group-separator="+++++++++" 'hello' a hello this is me +++++++++ something else hello hello bye 空行をgrepのコンテキスト「グループセパレーター」として使用する方法で、空行を作成する方法を学びました--group-separator=""。 ただし、2つの空の行が必要な場合はどうなりますか?私は言っ--group-separator="\n\n"てみましたが、リテラル\ns を取得します: $ grep -C1 --group-separator="\n\n" 'hello' a hello this is me …
8 shell  grep  quoting 

3
_PROXYに一致するすべてのENV変数の設定を解除します
私は一致するすべての環境変数を設定解除しようとしています_PROXY: env | grep -i _proxy | column -t -s '=' | awk '{ print $1 }' | grep -iv 'no_proxy' | xargs -0 -I variable unset variable しかし、それはで失敗していxargs: unset: No such file or directoryます。 ただし、に変更しようとするunsetとecho、すべてが期待どおりに機能しているように見えます。設定されている変数のリストが表示されます。 env | grep -i _proxy | column -t -s '=' | awk '{ print …

4
スペースがあるgrep出力でxargs grepを実行するにはどうすればよいですか?
正規表現に基づいてファイルを検索してから、それらのファイルのコンテンツを検索しようとしています。たとえば、私は次のようなものを持っています #Find all C++ files that match a certain pattern and then search them find . -name "*.cpp" | grep "<name regex>" | xargs grep "<content regex>" 私が遭遇している問題は、いくつかのパスにスペースが含まれていることですxargs。だけを使用している場合はfind、-print0引数を(-0引数on と共にxargs)使用して、xargsがスペースを区切り文字として扱わないようにすることができます。同様のものはありgrepますか? それとも、この問題に完全に間違った方法で取り組んでいますか?単純に、findto は私grepにxargs grepは理にかなっていますが、同じ結果が得られる他のアプローチを受け入れます。
8 shell  grep  find  quoting  xargs 

2
grep regexに応じて出力をリダイレクトする
gradle runRESTサーバーの起動に使用しています。RESTサーバーの出力は次のようになります。 XXX.XXX.XX.XXX - <moreinfo> randomtext randomtext XXX.XXX.XX.XXX - <moreinfo> XXX.XXX.XX.XXX - <moreinfo> randomtext XXX.XXX.XX.XXX - <moreinfo> XXX.XXX.XX.XXXこれはIPアドレスです。ランダムテキストはエラーメッセージです。悲しいことに、すべての出力はstdoutに送られます。 IPアドレスで始まるすべての行を、呼び出されたファイルに転送し、err.log他のすべての行に転送するにはどうすればよいall.logですか 残念ながら、gradle runこれはRESTサーバーであるため、1回しか起動できず、停止しません。 多分tee、grep組み合わせを使用しますか?

3
句読点を含まないすべての行を印刷します
句読点を含まないすべての行を印刷できる正規表現パターンが必要です: 入力: .This is line 1 This is ! line 2 This is line (3) This is line 4 出力:(する必要があります) This is line 4 これまでに試したこと: grep '[^[:punct:]]' file.txt ただし、句読点以外のすべての文字が表示されます。

2
オプションとなる可能性のある部分を含むテキストのブロックのグレッピング
非常に大きなログファイル、たとえばA.logにイベントを説明する複数のエントリがあります。ログファイルのイベントエントリで2つのことを実行したいと思います。 そのような各エントリの出現回数をカウントします(これは必須の要件ではありませんが、持っていると便利です)。 実際のエントリを別のファイルに抽出し、後で調べます。 典型的なイベントエントリは次のようになり、その間に他のテキストがあります。以下の例では、2つのイベントエントリがあり、最初のエントリには2つのDataChangeEntry ペイロードが含まれ、2番目のイベントには1 つのDataChangeEntry ペイロードが含まれています。 Data control raising event :DataControl@263c015d[[ #### DataChangeEvent #### on [DataControl name=PatternMatch_LegendTimeAxis, binding=.dynamicRegion1. beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxisPageDef_beam_project_PatternMatch_dashboard_LegendTimeAxis_taskflow_LegendTimeAxis_beamDashboardLegendTimeAxis_xml_ps_taskflowid.dynamicRegion58. beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxisPageDef_beam_project_PatternMatch_view_LegendTimeAxis_taskflow_LegendTimeAxis_beamVizLegendTimeAxis_xml_ps_taskflowid.QueryIterator] Filter/Collection Id : 0 Collection Level : 0 Sequence Id : 616 ViewSetId : PatternMatch.LegendTimeAxis_V1_0_SN49 ==== DataChangeEntry (#1) ChangeType : UPDATE KeyPath : [2014-06-26 06:15:00.0, 0] AttributeNames : [DATAOBJECT_CREATED, …

8
行の残りのGrep…試合後
次の構造を持つ2行のみを含むファイルがあります。 $ cat /tmp/pwpower.log 000D6F0000D34227, -114.10 000D6F0001A405C4, -130.09 値は私の太陽光発電所の電力値です。負の値は生成を意味します。 私はgrep / sed / awkを介して抽出された値が必要です-最も賢い方法は何でも。両方の値を別々に、マイナス記号なしで抽出する必要があります。 私が今やっているのはちょっとばかげていますが、うまくいきます。多くの人が私にとってより賢い方法を持っていると確信しています:-)もちろん、ここでは値とマイナスのみを表示しています。 最初の値を取得するには: cat /tmp/pwpower.log |grep -o "\-.*" | head -n 1 2番目の値を取得するには: cat /tmp/pwpower.log |grep -o "\-.*" | tail -n1 そして関連する質問、これらのSTRINGを取得して変換してSUMを計算できるようにする簡単な方法はありますか?

5
特定の拡張子に一致しない一部のファイルをgrepで除外するにはどうすればよいですか?
単語を含むすべての行をOKディレクトリから再帰的に出力したい。しかし、結果から除外する必要があるいくつかの拡張機能があります。 *~ *.map *.js except *.debug.js 私は試した: grep -r --exclude={*~,*.map} "OK" /some/dir 結果からそれらのすべての非デバッグ.jsファイルを削除する方法がわからない場合を除きます。
8 grep  wildcards 

2
2つの完全に異なるものをgrepし、値を別々の変数に割り当てる最も効率的な方法は何ですか?
CentOS 6.x 2つの完全に分離された文字列のcurl、grepから出力を取得し、それぞれの値を変数として割り当てたいと思います。(出力をディスクに書き込まずに)これを行う最も効率的な方法は何ですか? 通常、次のようなスクリプトを作成することを考えます。 #!/usr/bin/env bash foo1=$(curl https://domain.com/file.xml | grep string1) foo2=$(curl https://domain.com/file.xml | grep string2) しかし、これは2つのパスを取得することになり、恐ろしく非効率的です。もっと良い方法はありますか?うまくいけば、より少ないパスを含むソリューションですか?

3
pidofとpgrepの動作が異なるのはなぜですか?
私は/etc/init.d/myserviceこのようなサービスを初期化するためのinitスクリプトを持っています: ... start() { ... daemon /usr/sbin/myservice ... } stop() { ... pgrep myservice pidof myservice ps -ef | grep myservice ... } そして、私がサービスを停止しようとすると、これは出力です: 10000 10001 10000 root 10000 1 0 09:52 ? 00:00:02 /usr/sbin/myservice root 9791 9788 0 10:06 pts/1 00:00:00 /bin/sh /sbin/service myservice stop root 10001 9791 1 …

1
なぜgrepは時々ファイル名を表示し、時々表示しないのですか?
例1でフルパスが取得できない理由を誰かに説明してもらえますか? 例1-見つかった行を返す grep MODIFY /opt/releases/packages/cr_c_cr6/sas/dbms/*/*; outcome: MODIFY 例2-フルパスを返す grep MODIFY /opt/releases/packages/cr666/sas/dbms/*/*; /opt/releases/packages/cr666/sas/dbms/sti/FA_DISCLOSURE.ddl:MODIFY QUANTITY NUMBER; 解決策を見つけましたが、ここで何が起こっているのかを理解したいと思います。1つのコマンド、異なる結果/処理。
8 grep  wildcards 

2
試合と試合の前の1行をgrep
zzzzzzzzz aaaaaaaaa bbbbbbbbb & ccccccccc & ddddddddd hhhhhhhhh eeeeeeeee fffffffff & ggggggggg & 上記の行で、私が欲しいのはgrep/ sed/ awk(どのメソッドでもかまいません)&記号とその上に1行追加された行です。たとえば、必要な出力は次のようになります。 aaaaaaaaa bbbbbbbbb & ccccccccc & eeeeeeeee fffffffff & ggggggggg & 以下は私が運なしで試したことです。 egrep "&" | -b 1 file.txt

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