grep: 末尾のバックスラッシュ

grep: 末尾のバックスラッシュ

grepをしたいです\resources\。どうすればいいですか?

私は試した:

grep \resources\
grep \\resources\\
grep "\resources\"
grep "\\resources\\"

これらのどれも機能しません

ベストアンサー1

多くのアプリケーションでは、バックスラッシュは特殊文字です。

  • シェルを含む:他のバックスラッシュを使用するか、エレガントにエスケープする必要があります。一つ可能な場合はいつでも見積もり:

    $ printf '%s\n' foo\\bar 'foo\bar'
    foo\bar
    foo\bar
    

    ここで、コマンドは値を持つ2つのパラメータを受け取ります。foo\barこれは端末にそのまま反映されます。

    (上記ではバックスラッシュを独自に解釈する多くの実装をprintf代わりに使用しています(ここではバックスペース文字に拡張されています)。echoecho\b

  • しかし、バックスラッシュは特殊文字でもありますgrep。このコマンドは、などの多くの特殊シーケンスを認識できます\(。したがって、同様に、実際のバックスラッシュ文字でdoubleをgrepに提供する必要があります。これは、シェルを使用して次のように入力する必要があることを意味します。\|\.\\

    grep 'foo\\bar'
    

    または均等に:

    grep foo\\\\bar
    

    (両方の行はシェルにfoo\\bar引数として渡すように指示しますgrep)。

  • 他の多くのコマンドはいくつかの引数でバックスラッシュを解釈し、2つのレベルのエスケープが必要です(シェル解釈のための1つのレベル、コマンド解釈のための1つのレベル)。


ちなみに、シェルの場合、一重引用符は'…'すべての種類の文字の解釈を防ぎますが、二重引用符はそれらのほんの一部だけを防ぎます。具体的には$`\の接続保持文字"…"

おすすめ記事