8

このSOの質問には、説明できないことがあります。

grep "\'" input_file

指定されたファイルのすべての行に一致します。\'grepには特別な意味がありますか ?

4

4 に答える 4

6

grep regex GNU拡張:'\''は入力全体の終わりに一致します

于 2012-07-28T09:21:37.773 に答える
3

それは本当に奇妙な振る舞いですgrep、私はそれを説明する方法がわかりませんが、それは\'どのキャラクターとも一致しないことに注意する必要があります。それはと同じ意味を持っているように見えます$

$ echo x | grep "x\'"
x
$ echo xy | grep "x\'"
$ echo x | grep "\'x"

アップデート1

http://www.gnu.org/software/findutils/manual/html_node/find_html/grep-regular-expression-syntax.html(リンクを提供してくれたRichard Sitzeに感謝)に記載されているように、実際には$\'しかし、その間、との違いに気づきました$

$ echo x | grep 'x$'
x
$ echo x | grep 'x$$'
$ echo x | grep "x\'"
x
$ echo x | grep "x\'\'"
x
$ echo x | grep "x\'\'\'"
x

\'何度でも指定できますが、ではありません$。は1つだけでなければなりません$

もう一つの重要な発言。マニュアルには次のように書かれています。

 ‘\'’ matches the end of the whole input

しかし、厳密に言えば、\'入力全体の終わりだけでなく、すべての1行の終わりにも一致するため、これは真実ではありません。

$ (echo x; echo y) | grep "\'"
x
y

正確にはどうですか$

于 2012-07-28T09:02:09.793 に答える
3

正規表現のこの機能を知りませんでした。ただし、文字列アンカーの末尾としてregular-expressions.infoにリストされています。

これは、GNUBasicおよびExtendedRegular Expressionsのすべての正規表現実装にのみ存在するわけではありません。詳細については、この互換性チャートを参照してください。

于 2012-07-28T09:23:37.230 に答える
-2

\はエスケープ文字です。つまり、'は、制御文字としてではなく、検索するテキストと見なす必要があります。

于 2012-07-28T08:45:58.700 に答える