このSOの質問には、説明できないことがあります。
grep "\'" input_file
指定されたファイルのすべての行に一致します。\'
grepには特別な意味がありますか ?
grep regex GNU拡張:'\''は入力全体の終わりに一致します
それは本当に奇妙な振る舞いです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
正確にはどうですか$
。
\はエスケープ文字です。つまり、'は、制御文字としてではなく、検索するテキストと見なす必要があります。