ファイルを読み込み、パイプでgrep文を作成して-vフラグを使用してこれらのパターンを削除する必要があります。つまり、ファイルがあります。例えば、以下のパターンが含まれていnegativelist、:シェルスクリプトでアスタリスクやその他の特殊文字をエスケープする
Hello
World
Java
はこのように、私はラインでこのファイルの行を読んで、次のようにサンプルファイルからこれらのパターンを除去するためにパイプされたgrepのステートメントを構築、のgrep
inputfileに-v "Hello" inputfile | grep -v "World" | grep -v "Java"
しかし、私はネガティヴリストに特殊文字を宣言している間に問題に直面しています。通常はgrep -v '*' 入力ファイルを使用して、アスタリスクを含むすべての行を削除しますが、この作業を行うことはできません。 ネガティヴリストでアスタリスクを一重引用符で囲んでエスケープしても、役に立たないようです。アスタリスクをエスケープして、それを含む行を消すことができるようにするための考え方、どの行を囲む私の現在のアプローチを使用して否定リストから二重引用符を読み取るか?
- grepをパイプ文字列は次の形式でスクリプトによって構築されています: は、私は、制約の次のセットを持って、明確にする はgrep -v "LINE1 negativelistから"入力ファイル| grepの-v negativelistから「LINE2 ...とそう
- 上さらに、このスクリプトは、このgrepコマンドを実行し、別のファイルにその出力を格納します。
- 私だけで、二重引用符の間に何が起こるのかを制御することができます「*」コマンドラインから入力ファイル。私はスクリプトが
- がさえ、私はgrepのを実行することにより、所望の出力を得ると思ったこれらのパイプのgrep文を生成する方法を変更することはできませんnegativelistのパターンを定義する、単純に*保存negativelistは、aを含むすべての行を削除するという望ましい結果をもたらさないそれらにsterisk。また
、例えばハローなどのパターンを定義する。*世界形態
Hellotest1Worldのすべての行を除去する、または
Hellotest2World
negativelistで定義された」doesnのアスタリスクが正しくエスケープされない可能性があります。コマンドラインで次の文は、正しく動作します。grep -v「こんにちは*世界」 inputfile解説、それは正しくこんにちは含むすべての行は、あなたがすべき世界
その提案をお寄せいただきありがとうございます。これらのパイプ文を構築するスクリプトが私が制御するものではないので、私はfgrepを使うことができないと仮定して、他の提案はありますか? – Rishabh
投稿が編集されました。あなたは何をコントロールしていますか? 'grep'もこのように使うことができます:' grep '\ *' ' –
パイプでgrep文を生成するスクリプトは、実際に* negativelist *から各行を二重引用符で囲みます。この制約を受けて* negativelist *にアスタリスクをどのように宣言しなければならないか考えてみませんか? – Rishabh