一重引用符の中にバックスラッシュを含む二重引用符のファイルを見つける方法は?

一重引用符の中にバックスラッシュを含む二重引用符のファイルを見つける方法は?

次の行を含むファイルがあります。

xxx <u2py.DynArray value=b'F\xfeVOC\xfeD_VOC'>

シェルスクリプトでgrep u2py.DynArray value=b'F\xfeVOC\xfeD_VOC' 何をしようとしていますか?

grep "u2py.DynArray value=b'F\xfeVOC\xfeD_VOC'"ファイルを試しましたが、何も戻りませんでした。

ベストアンサー1

オプションの使用-F(固定文字列の検索、以前はこのユーティリティを使用して行われたfgrep):

grep -F "u2py.DynArray value=b'F\xfeVOC\xfeD_VOC'" file

.文字は\正規表現演算子で、1 つは 1 文字と一致し、もう 1 つは一致するために使用されます。脱出する正規表現演算子または新しい演算子の導入(上記のように、xこの動作はPOSIXでは指定されておらず、実装によって異なる場合があります)。

したがって、そうでない場合は両方とも-Fエスケープする必要があります。

Bourneのようなシェルまたはfishinsideにはシェルに対する特別なエスケープの意味が"..."あるので\、これには別のエスケープラウンドも必要です。

grep "u2py\.DynArray value=b'F\\\\xfeVOC\\\\xfeD_VOC'" file

cshまたはtcshでは、次のようになります。

grep "u2py\.DynArray value=b'F\\xfeVOC\\xfeD_VOC'" file

シェルrcおよび派生クラスは"..."参照演算子としてサポートされていません。一重引用符を使用する必要があります。

grep 'u2py\.DynArray value=b''F\\xfeVOC\\xfeD_VOC''' file

''(一重引用符は一重引用符内に表示されます。通常の文字のように特殊文字を使用する方法は?より多くの情報を知りたい場合)。

おすすめ記事