作者: Bunta
日時: 2008/8/31(14:17)
藤岡さん

>なんだか、おかしいですね。Doughertyのsed & awkの66ページのメタキャラク
>タ一覧に「.」は「改行を除く任意の一文字にマッチする」と明確に定義されて
>いますよ。

 GNU sedの拡張です。
`.'
     Matches any character, including newline.
This is sed.info, produced by makeinfo version 4.5 from sed.texi.より。
(その本はGNU sedも考慮しているようですが、元々は考慮してないと思います。
英語版の2nd ed.でも同じように記述されていました。誤解しやすいですね。)

> しかし、改行とは行末にあるもので、そのほかの位置にある改行は単なる一文
>字と見做すということになっているということでしょうね。

 行末でも1字です。

C:\>sed --version
GNU sed version 1.18 + multi-byte extension 1.03
 特別に記さないかぎり、上の結果です。

--- test.sed ---
G		# put a newline at the end of PS
s/\(.\)$/n/	# $ matiches $, not \n or an empty space before \n in SED
----------------
--- test.txt ---
a
----------------
--- kek --------
an
----------------