次の内容を含むファイルがあります。
sh-4.2$ cat file1
example of multiple
pattern
this is an
example of multipole
sorry multiple
pattern matching
using grep
so the example is the
file itself
-example
-multiple
-bye
tata
!
上記のファイルから "-example"を検索すると、grepコマンドは目的の出力を提供しません。パターンに「-」が含まれている場合は、-eオプションを使用する必要があることがわかります。
私が使用した最初の例では、-はい引用符なしで直接:
sh-4.2$ grep -example file1
example of multiple
example of multipole
so the example is the
-example
-はい一重引用符を使用する:
sh-4.2$ grep '-example' file1
example of multiple
example of multipole
so the example is the
-example
-はい二重引用符とエスケープ文字を含む
sh-4.2$ grep "\-example" file1
-example
sh-4.2$
ベストアンサー1
検索パターンに「-」が含まれており、検索パターンに「-」が含まれている場合は、その-e
フラグを使用する必要があります。そのフラグを使用しないため、-e
シェルは「パターン」を引数(およびパラメータ)として解釈します。以下で見ることができます:
$ grep "-foo" file1
grep: oo: No such file or directory
拡張すると、コードは引数と「xample」引数を使用して実行するgrep "-example" file1
シェルを示します。grep
-e
これは、同様のアプローチを試みたときに経験したのと同じ問題です。rm -my-silly-file-name
うまくいかなかったので、同様のアプローチを使用する必要がありますrm ./-my-silly-file-name
。別の解決策はrm -- -my-silly-file-name
次のとおりです。
$ grep -- "-example" < file1
-example
「--」は、シェルに続くすべてを伝えます。いいえ議論。
または、次のように「\」を使用して「-」をエスケープすることもできます。
grep "\-example" file1
この記事では、参照の詳細の一部を詳しく説明します。:関連部分はシェルで解釈する必要があるパラメータと逆引用符コマンドは二重引用符で囲みます。二重引用符を使用すると、内容はシェルで解釈されます。