Интересно, что если вы хотите найти и заменить только точку, вы должны поставить точку в наборе символов.По какой-то причине избежать одной только точки в команде sed не получается.Точка по-прежнему расширяется до односимвольного символа.
$ bash --version # Ubuntu Lucid (10.04)
GNU bash, версия 4.1.5 (1) -релиз (x86_64-pc-linux-gnu)
$ echo aa.bb.cc | sed s/\./-/g # replaces all characters with dash
'--------'
$ echo aa.bb.cc | sed s/[.]/-/g # replaces the dots with a dash
aa-bb-cc
С добавлением ведущих символов в поиске, escape работает.
$ echo foo. | sed s/foo\./foo_/g # works
foo_
Размещение точки в наборе символов, конечно, также работает.
$ echo foo. | sed s/foo[.]/foo_/g # also works
foo_
- Пол