1

私は Windows で作業しており、ディレクトリから引用符で囲まれたすべての文字列を検索したいと考えています。たとえば、これがある場合:

string s = "Hello World!"

grep コマンドは「Hello World!」を返すはずです。これが私がこれを行う方法です:

grep -Roe \"[^\"]*\" directory

出力をファイルにリダイレクトする必要がありますが、「grep -Roe \"[^\"]*\" directory > log」のように出力をリダイレクトすると、次のエラーが発生します。

>: Invalid argument
log: No such file or directory

これを解決して出力をリダイレクトする方法を知っていますか?

4

1 に答える 1

2

これは非常に古い質問であり、今では OP でおそらく解決されています...しかし、後世のために、この問題はコンパイラの規則に関係していることに注意する価値があります (この質問を参照し、「あなたは」という見出しの答えを見つけてください。 t は Unix シェルを使用しています。引用は異なります")。

あなたが発見したように、あなたの式はコマンドラインでうまく動作しますが、リダイレクトと組み合わせて使用​​すると間違って解析されます.

^解決策は、二重引用符をバックスラッシュ ( ) ではなくキャレット ( ) でエスケープすること\です。また、キャレットもエスケープする必要があります(キャレットを使用)。また、検索式全体を一重引用符で囲む必要があります。

キャレットエスケープ(およびで囲む'')を使用してコマンドを再定式化すると、

grep -Roe '^"[^^^"]*^"' directory > log

私はこれをかなり使用して、従来の HTML ファイル (基本的には、プレゼンテーションからコンテンツを分離することをあまり信じていなかった元コーダーによって書かれたもの) からスタイル属性を取得します。

grep -iown 'style=^"[^^^"]*^"' index.html > styles.txt

それは魅力のように機能します。

HTML ファイル内のすべてのコード リポジトリを想像してみてください。pタグも<p style="margin-left:20px;margin-top:20px; font: normal 12px Arial; color#FFFFFF">. おいおい。

于 2016-09-16T07:51:11.293 に答える