は問題だ:私はそのファイルの数千がある参照I grep -rnwl 'C:\out\' --include=*.txt -E --file='comp.log'
場合、または各パターンファイルに基づいてgrep + sedを使用しますか?ここ
を正規表現を含む300行のリスト内の文字列の一つ以上が含まれていない場合があります〜35Kのファイルを持っています一致が含まれています。
これまでに使用されていたcomp.logの文字列を含むこれらのファイルの各行を削除するにはどうすればよいですか?
編集:comp.logは各行の簡単な正規表現が含まれていますが、ほとんどの部分で一致する各文字列は、これがあるユニークな
あり、それが構成されている方法の例です:
server[0-9]\/files\/bobba fett.stw
[a-z]+ mochaccino
[2-9] CheeseCakes
...
など愚かな例を除いて、各行がいくつかのバリエーションのために独特のものであることを示していますので、本当に必要なものに影響を与えるべきではありません。インラインではなくファイル内のパターンを使いたいという点を除いて、 's/pattern/replacement /'と変わりはありません。
[OK]を、ここでMUCHフィッシャーアプローチ@/@ Kenavozをいじった後、私は完全に別の解決策を見つけましたが、更新(私は数日後に答えた質問を宣言しない場合はSO入院患者を取得します) です最初のものが最初に。 で動作するsed用の修正されたパターンリストを作成すると、が動作します。
と同様に、serを落とす@werkritterのアプローチです。 (この1つは私が見つけた最も多くの...間違って... "問題を回避する方法")。
で問題を解決してしまった私は(...それが何を意味するのかわからない。数字。それはUbuntuの下で動作しなかったので)窓/ cygwinの下Mklementの答えの仕事@作ることができませんでした
もっと...長期的には、再利用可能なフォームは、PowerGrepと呼ばれる教授によって指摘されたすばらしいプログラムでした。それは本当に他のすべてのオプションを水から吹き飛ばします。残念ながらそれは窓だけであり、無料ではありません。 (ここで広告することさえ、物事は安くはないが問題を解決する)。
@ werkiterの回答は「適切な」回答ではなく、解決策として@Lars Fischerと@ Kenavozの回答を選択するだけではありません(彼らはお互いを補完します)、私は@Kenavozに最初。
最終的な考え:私はより単純で普遍的で無料のソリューションを望んでいましたが、明らかにそうではありません。
は何である ' 'Cと: \ out \ ''?あなたはWindows/DOSマシンですか? – anubhava
か、パターンファイルと比較するのではなく、grepからファイルパスと行番号を渡すことができますか? – VileTouch
はい、それはウィンドウですが、cmdの代わりにminttyを開くと、それは異なって見えるので、関連性はないと思います。 "c:\ out"は、変更するすべてのファイルが存在するパスです。 – VileTouch