diesel писал(а): ↑21.01.2010 00:34
опишите словесно в каких именно местах...
Тире должно ставиться между словами вместо дефиса там (и только там), где вокруг дефиса с каждой стороны есть хотя бы один пробел или начало/конец строки. Именно это я и написал sed'у в команде.
Не работает тут, например:
Код:
$ cat src
testtext -
ohno
$
drBatty писал(а): ↑21.01.2010 01:29
gluk47 писал(а): ↑21.01.2010 00:32
sed 's/\(^\| \)-\($\| )/\1—\2/g' <src >dest
Зачем так сложно?
насколько я помню, конструкция вида (^|X) опасна - некоторые версии sed могут это не понять.
Мой sed понимает

Поскольку решение лично для меня, то пусть пока останется.
А почему нет?.. конструкция же построена по правилам regexp, нет?
В данном случае можно перечислить все альтернативы, но даже это как-то непонятно: регулярные выражения же как раз придуманы для описания
шаблонов, а sed их поддерживает как раз…
Потом я хотел кавычки поменять, например. Вставить типографские закрывающие командой вида:
.
Здесь уже весьма много альтернатив в правой части, не перечислять же их все.
В общем-то в данном случае помогает простановка звёздочки после квадратных скобок в правой части. В силу специфики текста (литературное произведение) символы в квадратных скобках всё равно встречаются не больше одного подряд, а если ноль — то как раз конец строки. Но выглядит как хак и даже тут не всегда верно)