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

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

4
ファイル内の単語をGrepしてからファイルをコピーする
ファイルのコレクションがあります(* .zip、*。txt、*。tar.gz、*。doc、... etc)。これらのファイルはパス内にあります。すべてのファイル(* .txt)を検索し、特定の単語を含むテキストファイル(たとえば、LINUX / UNIX)のみをコピーしたい。 私は以下を実行しました: find . -name "*.txt" | grep 'LINUX/UNIX' このコマンドはすべてのテキストファイルを見つけることができ、 "grep"は 'LINUX / UNIX'を含むテキストファイルのみを一覧表示することにより、結果のテキストファイルをフィルター処理しました。 これらの最終的なファイル(つまり、 'LINUX / UNIX'を含むテキストファイル)を特定の選択したパスにコピーするにはどうすればよいですか? 応募してみました xargs find . -name "*.txt" | grep 'LINUX/UNIX' | xargs cp <to a path> しかし、それはうまくいきませんでした

7
grepはファイルのn行をスキップし、後に検索します
巨大なログファイルがあり、パターンの最初の発生をgrepし、この発生の直後に別のパターンを見つけたいと考えています。 例えば: 123 XXY 214 ABC 182 558 ABC 856 ABC 私の例では182、次の出現を見つけて見つけたいと思いますABC 最初の発生は単純です: grep -n -m1 "182" /var/log/file これは出力します: 5:182 ABCの次の出現を見つけるにはどうすればよいですか? 私の考えは、182の行番号に基づいて、grep最初のn行を(上記の例ではn=5)スキップするように指示することでした。しかし、どうすればよいですか?
9 grep 

1
grepを使用した無効な後方参照
つまり、1つの文字が3回繰り返され、その後に別の文字が3回繰り返される6文字の単語を見つけようとしています。たとえばaaabbbまたはoookkk。 やっています: grep -E "[a-z]\1{3}\S[a-z]\1{3}" filename まず、正規表現は正しいですか?第二に、なぜ私は得るのgrep: Invalid back referenceですか?

1
grep:大文字と小文字を区別して検索するGREP_OPTIONSを無視する
私は通常grepで大文字と小文字を区別せずに動作GREP_OPTIONS="--ignore-case --color"する~/.bashrcように設定しました。ただし、実際に大文字と小文字を区別して検索するためにgrepが必要な場合がありますが、manページではこれについてのパラメーターを提案していません。 どうすればこれを達成できますか?

2
パターンに一致するサブディレクトリのみをgrep
私は数千のサブディレクトリで構成されるディレクトリツリーを持っていますが、頻繁にそれらのディレクトリの小さなサブセットのみをgrepする必要があります。grepパターンに一致するサブディレクトリのみをどうすればよいですか? たとえば、grepを実行する次のサブディレクトリがあるとします。 ... ... ... /foo /fooLib /fooHandler /fooGizmo ... ... ... 上記の...エントリは、grepに含めたくない他の何千ものディレクトリを表しています。 barこれを行うと、のすべてのインスタンスを探していると仮定します。 grep -n --recursive bar * 探しているものが見つかりますが、すべてのディレクトリにあります。パターンに一致するサブディレクトリのみを検索するにはどうすればよいfoo*ですか?
9 grep 

3
docxファイルを検索するコマンドラインツール
docxファイルをテキスト検索するコマンドラインツールはありますか?試してみましたがgrep、txtファイルとxmlファイルでは問題なく機能しますが、docxでは機能しません。最初にdocxをtxtに変換することもできますが、docxファイルを直接操作するツールを使用します。Cygwinで動作するツールが必要です。 OP編集:後で、grepを実現する最も簡単な方法は、実際にはこれらのdocxをtxtに変換してからgrepで変換することであることがわかりました。


2
マッチの周囲の文字をgrep
巨大なデータベースダンプ内で検索と置換を行いたいと思っていますが、それは私が発生するはずの動作をしていません。ファイル内のターゲット文字列をgrepして、周囲の8文字程度を確認したいと思います(場合によっては、その数値を調整する必要があるかもしれません)。どうやってやるの? 私が目を見張ることができない理由は、何千とは言わないまでも何百ものマッチがあるからです。文字列を囲むいくつかの文字を取得し、それをuniq何かにパイプして、検索と置換で予期しない動作が発生する理由を確認します。 また、同じ行に複数のマッチがある可能性があります!

7
コロンの前にコンテンツを取得する
Linuxにテキストファイルがあり、内容は次のようになっています。 help.helloworld.com:latest.world.com dev.helloworld.com:latest.world.com 以下のようにコロンの前の内容を取得したい: help.helloworld.com dev.helloworld.com どうすればターミナル内でそれを行うことができますか?

3
なぜこの方法でgrepできないのですか?
「disable = yes」という行を「disable = no」に変更して、次のファイルに入れます。 [root@centos2 ~]# cat /etc/xinetd.d/tftp service tftp { ... server_args = -s /var/lib/tftpboot disable = yes per_source = 11 ... } 私はこれを試しました: [root@centos2 ~]# grep 'disable = yes' /etc/xinetd.d/tftp [root@centos2 ~]# 私のマウスでスペースをコピーするだけで、それは何もグレップしません... 「無効化」と「=」の間の要素が何であり、どのようにしてわかりますか?いくつかのスペースですか?集計? 私は次の正規表現を使用してgrepできることを知っています: [root@centos2 xinetd.d]# grep -E 'disable.+= yes' /etc/xinetd.d/tftp disable = yes [root@centos2 xinetd.d]# …
8 sed  grep 

3
GNU grepの最適化
grep -Eパターンファイルでegrep()を使用しています。(-f path/to/file)。 これは、テキストのストリームの無限ループで行われます。これは、すべての入力を一度に累積してgrepに渡すことができないことを意味します(など*.log)。 次の実行で使用するために、grepがPATTERNファイルからビルドしているNFAを「保存」する方法はありますか? 私はグーグルを検索して、運が悪いのでドキュメントを読みました。 もう少し説明しようと思います。IPアドレスやドメインなどの正規表現(質問の一部ではありませんが、別の方法で提案することもできます)を含む文字列の固定数を見つける必要があります。検索はインターネットからのフィードで行われます。あなたはそれをテキストのストリームと考えることができます。grepストリームなので、すべての入力で使用することはできません。ストリームのチャンクを蓄積grepしてそれを使用できます(したがってgrep、各行で使用しません)が、これも制限されています(30秒としましょう)。 私が知っているgrep(ファイルから私の場合には)そのすべてのパターンからNFAを構築しています。したがって、ここでの私の質問はgrep、次の実行のためにそのNFAを変更しないため、保存するように指示できますか?これにより、毎回NFAを構築する時間を節約できます。
8 grep 

2
検索からgrepへのパイプ
私は何をしようとしていますか? プロジェクト内の他のファイルで必要とされていないファイルを探すコマンドを記述します。 何を試しましたか? findファイル名のリストを取得するために使用しています。次に、検索するファイルではなく、ファイル名を検索文字列として使用します。 私はfind server/lib -type f -exec basename {} \; | cut -f 1 -d '.'ファイル名のリストを取得し、ファイル拡張子を取り除くために使用しています。 これgrep -R --exclude-dir=node_modules <search-string> . -lが、各ファイル名をパイプしたいものであることはわかっていますが、それらを<search-string>引数として渡す方法がわかりません。 他の情報 また、これにパイプするgrepと、find明らかにしたくない(ファイルのリスト全体)の結果全体が渡される可能性があることも漠然と認識しています。 また、(これはおそらくこの質問の範囲内ではありませんが)grep何も見つからないファイル名を見つける方法としてこれを使用しているので、この種の出力を取得するためのアドバイスは大歓迎です > <the-command> filename1 server/lib/foo.js # where these are the list of files in which it appears test/lib/foo.js filename2 Not Found! #where `filename2` wasn't …

6
1つの列のすべての値を1に置き換えます
12行3列のテキストファイルが複数あります。 例: 2 6 0.74 42 6 0.58 80 6 0 112 6 0.24 132 6 1 216 6 0.7 342 6 0 390 6 0.21 432 6 0.56 466 6 0.75 524 6 0.6 646 6 0.9 すべての行で3番目の列のすべての値を1に設定したいと思います。 出力は次のようになります。 2 6 1 42 6 1 80 6 1 112 …


5
**で始まる行を見つける方法
ファイル内の行がで始まるかどうかを確認する必要があります**。 *シェルによってワイルドカードとして解釈されるため、その方法を理解できません。 grep -i "^2" test.out 行が2で始まる場合に機能しますが、 grep -i "^**" test.out 明らかに動作しません。 (この行がaで終わるかどうかも知る必要)がありますが、まだ試みていません)。

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