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

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

3
bashはxargs grepを1回だけ検索します
多分それは少し奇妙です-そして多分これを行うための他のツールがありますが、まあ.. 次の古典的なbashコマンドを使用して、文字列を含むすべてのファイルを検索しています。 find . -type f | xargs grep "something" 複数の深さで、非常に多くのファイルがあります。「何か」が最初に現れるだけで十分ですが、findは検索を続け、残りのファイルを完了するのに長い時間がかかります。私がやりたいのは、grepから検索への「フィードバック」のようなもので、findが他のファイルの検索を停止できるようにすることです。そのようなことは可能ですか?
16 bash  find  grep  xargs 

5
ファイル内の任意の場所に複数のキーワードを含むファイルを検索します
私は、ファイル内のどこにでも、探しているキーワードの完全なセットを含むディレクトリ内のすべてのファイルをリストする方法を探しています。 そのため、キーワードを同じ行に表示する必要はありません。 これを行う1つの方法は次のとおりです。 grep -l one $(grep -l two $(grep -l three *)) 3つのキーワードは単なる例であり、2つ、または4つなどの場合もあります。 私が考えることができる2番目の方法は次のとおりです。 grep -l one * | xargs grep -l two | xargs grep -l three 別の質問に登場した3番目の方法は次のとおりです。 find . -type f \ -exec grep -q one {} \; -a \ -exec grep -q two {} \; -a …




8
内容に100%NUL文字を含むファイルを見つける方法は?
そのようなファイルを識別できるLinuxコマンドラインコマンドとは何ですか? 私の知る限り、findコマンド(またはgrep)はテキストファイル内の特定の文字列にのみ一致します。しかし、コンテンツ全体を一致させたい、つまり、行末文字を無視して\0+、どのファイルが正規表現に一致するかを確認したい。おそらくこのイディオムは機能するかもしれませんが、行を無視してgrepを作成する(そしてファイルをバイナリとして扱う)方法がわかりません。find . cat | grep 背景:ラップトップがフリーズすると、数日ごとにbtrfsパーティションの情報が失われます。書き込み用に開かれたファイルの内容はゼロに置き換えられます(ファイルのサイズはほぼそのままです)。私は同期を使用しますが、これらの偽のファイルを伝播させたくありません。バックアップから取得できるようにそれらを識別する方法が必要です。

5
特定の名前を持つすべてのプロセスを強制終了するにはどうすればよいですか?
コマンドを実行し、次のps -A | grep <application_name>ようなプロセスのリストを取得します。 19440 ? 00:00:11 <application_name> 21630 ? 00:00:00 <application_name> 22694 ? 00:00:00 <application_name> 私は、リストからすべてのプロセスを殺したいです:19440、21630、22694。 試しましたps -A | grep <application_name> | xargs kill -9 $1が、エラーが発生します。 kill: illegal pid ? kill: illegal pid 00:00:00 kill: illegal pid <application_name> どうすれば優雅にこれを行うことができますか?
16 grep  process  kill  ps 


2
grepでtail -fを使用して周囲の行を表示する方法
私は、1つのドメインだけでなく、次の2行によっても記録されたログファイルの出力を見たいと思います。 例: tail -f /var/log/apache2/modsec_audit.log |grep mydomain.de 「mydomain.de」を含むすべての行が表示されますが、重要な情報は、ドメインが含まれる行の下の行にあります
15 grep  tail 

1
別のファイルにリストされているファイルからパターンを見つける
あるファイルにリストされているパターンを見つけ、別のファイルで見つけたい。2番目のファイルには、コンマで区切られたこれらのパターンがあります。 たとえば、最初のファイルF1には遺伝子があります ENSG00000187546 ENSG00000113492 ENSG00000166971 2番目のファイルF2には、これらの遺伝子といくつかの列(5列)が必要です。 region gene chromosome start end intronic ENSG00000135870 1 173921301 173921301 intergenic ENSG00000166971(dist=56181),ENSG00000103494(dist=37091) 16 53594504 53594504 ncRNA_intronic ENSG00000215231 5 5039185 5039185 intronic ENSG00000157890 15 66353740 66353740 したがって、2番目のファイルにあるENSG00000166971遺伝子は、コンマで区切られた別の遺伝子を持っているため、grepには表示されません。 私のコードは: grep -f "F1.txt" "F2.txt" >output.txt それらの値の1つが存在しても、それらの値とそれに関連付けられたデータが必要です。これを行う方法はありますか?
15 grep 



8
複数行のgrepを実行する方法
2行に表示されるテキストに対してgrepをどのように実行しますか? 例えば: pbsnodes Linuxクラスタの使用率を返すコマンドです root$ pbsnodes node1 state = free procs = 2 bar = foobar node2 state = free procs = 4 bar = foobar node3 state = busy procs = 8 bar = foobar 「フリー」状態のノードに一致するprocの数を判別したい。これまで「procの数」と「フリー状態のノード」を特定できましたが、それらをすべてのフリーprocを表示する1つのコマンドに結合したいと思います。 上記の例では、正解は6(2 + 4)になります。 私が持っているもの root$ NUMBEROFNODES=`pbsnodes|grep 'state = free'|wc -l` root$ echo $NUMBEROFNODES …

1
パターンが見つからないときにシェルスクリプトからの早期終了を防ぐための「set -e」および「grep」イディオム
必要なヘルプ-GNU / LINUX bashでのシェルスクリプトのコンテキストで: 私はいつも使用しますset -e。多くの場合、パターンが見つからないことを示す終了ステータスがあるgrep場合、スクリプトの実行を終了させたいとは思わないでしょう。grep1 この問題を解決しようとしたのは次のとおりです。 (Iを試してみてください) の場合set +o pipefailと同様なものとgrepの呼び出しgrep 'p' | wc -l将来のメンテナが有効になるまで、私は目的の動作を取得しますpipefail。また、有効にするのpipefailが好きなので、これはうまくいきません。 (IIしてみてください) を使用しsed、またはawkその後、およびのみパターンに一致する行を印刷wcマッチしたパターンのための試験に適合ライン。sedto を使用することgrepは私の本当の問題の回避策のように思えるので、私はこのオプションが好きではありません。 (トライIII) これは私の一番好きではありません-次のようなものです:set +e; grep 'p'; set-e どんな洞察/イディオムも最も高く評価されるでしょう-ありがとう。
15 bash  grep  gnu  coreutils 


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