ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Linuxコミュの質問: egrepにおける正規表現の記述

  • mixiチェック
  • このエントリーをはてなブックマークに追加
Linuxに特化した話ではないのですが、知っている方が居ましたら教えて下さい。

【質問】
egrep で、正規表現として \` を渡したときの動きが直感と違う物になります。この理由がわかりません。理由を教えて下さい。


【環境】
以下の2環境で同じ現象
・CentOS release 4.5 (Final) + bash
・Darwin Kernel Version 9.2.0 + zsh + egrep (GNU grep) 2.5.1


【現象】
(1)と(2)の両方がなぜだかわかりません。ただ、(2)に関しては \` に特殊な意味があるなら納得です。

(1) \` が、どんな文字列にもマッチする
% echo 'abc' | egrep '\`'
abc
% echo 'foo' | egrep '\`'
foo

(2) \` が ` と等価ではないようにみえる
% echo 'a`c' | egrep 'a\`c'

※ ` の代わりに " だと、予期した動作になります
% echo 'abc' | egrep '\"'
% echo 'a"c' | egrep 'a\"c'
a"c


【やったこと】
man egrep で正規表現を見ましたが、バックリファレンス(\1等)はありましたがこの正規表現の記述を見つけられませんでした。


【補足】
bashとzshにおけるシングルクォートの挙動も詳しく知りませんので、そちらの問題かもしれないと思っています。

コメント(3)

GNU拡張で、
左右のシングルクウォートと左右のアングルはエスケープでメタになります。
sock/vuelaさん、助言ありがとうございます。


% echo 'barfoo' | egrep '\`foo'
% echo 'foobar' | egrep '\`foo'
foobar
% echo 'barfoo' | egrep "foo\\'"
barfoo
% echo 'foobar' | egrep "foo\\'"


なるほど、\<\>や^$と同じ挙動ですね。助かりました、ありがとうございますm(_ _)m。

ただ、man egrep しても、

The symbols \< and \> respectively match the empty string at the beginning and end of a word.

とは出ているのですが、\`と\'の挙動が見つかりません。後学のため、どこにドキュメント化されているか教えて頂けませんか?

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Linux 更新情報

Linuxのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。