2012-09-16 24 views
6

sedの特殊文字の完全なリストは何ですか?sedの特殊文字

grepの特殊文字のリストと同じように答えないでください。私の質問が次のように変わるだけです。grepの特殊文字の完全なリストは何ですか?

+0

sed(およびgrep)のドキュメントがお探しのものです。そこには何が見つかりませんでしたか? – Mat

+0

私は特殊文字の例を見ていますが、それは特殊文字の_complete_リストであることは決して確かではありません – mnr

+2

"特殊文字"という意味ではわかりませんが、ドキュメントにはできることがすべて記載されています。そのドキュメンテーションをここに複製することに意味はありません。 – Mat

答えて

3

これは、sedが通常の文字とは異なる方法で応答する[\^$。|?* +()文字の完全なリストだと思います。

+2

また、方言にもよります。 Linuxの 'sed'では'()| +? 'という文字は、バックスラッシュが前に付いている場合に限り、それ自身で特別なものではありません。 – tripleee

+1

また、文字クラス '^ - ]'の中には特別なものはありません。これは本当に別のミニ言語です。 – tripleee

+1

[POSIX](http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html)の文字クラスの中で、 '[[:alpha:]]'のようなロケールセンシティブな式を書くこともできます':[:punct:] [:digit:]]'なので、 ':'は特別な意味を持ち、(さらに別の)ミニ言語です。 URLには、POSIX標準BRE(基本正規表現)とERE(拡張正規表現)の動作がリストされています。 ['sed'](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/sed.html)のPOSIXの記述はそのことを詳述しています。特定のシステムについては、ローカルのマニュアルページを参照してください。 –

5

です。

BRE特殊文字と、彼らは特殊な意味を持つコンテキスト以下の通りです:厳密には、sedの規格に準拠のみれる the standard状態が基本的な正規表現を使用する必要があります話す

.[\期間、左角括弧、およびバックスラッシュは、括弧の式で使用される場合を除いて、特殊なものになります(RE括弧の式を参照)。バックスラッシュの前にブラケット式の一部ではない '['を含む式は、未定義の結果を生成します。

*アスタリスクは、ブラケット式で使用する場合を除き、BRE全体の最初の文字(最初の「^」の後に)、または部分式の最初の文字(イニシャルの後'^'、あれば)。 BREではは、複数の文字

を見るマッチ

^曲折がアンカーとして使用されると特別なこと

$ dollar-を を(アンカーBRE式を参照)またはブラケット式の最初の文字として(REにブラケット式を参照)するものアンカーとして使用された場合、標識は特別でなければならない。

したがって、完全なリストは.[\*^$ですが、文脈は重要です。また、多くのsedは、拡張正規表現(ERE)を使用するオプションを提供します。これは、リストを拡張し、文字が特別なコンテキストを変更します。たとえば、EREがない場合は、\(\)を使用してグループ化されますが、EREs ()はそれ自体が特殊なので、文字通り一致するようにエスケープする必要があります。