A. По умолчанию. На самом деле, часто именно это и надо.
Как сделать так, чтобы заменялись все совпадения написано здесь.
Подробнее про команду s в info sed.
A. Никак. С помощью RE это сделать принципиально невозможно. Однако, sed так умеет: воспользуйтесь адресным выражением, например так:
sed '/ABC/ ! { необходимые команды }'
Найти несовпадение в пределах одной строки несколько сложнее, используйте маркёры.
Для повышения быстродействия все RE в sed жадные.
Однако, sed умеет выделять и с помощью не жадных квантификаторов. См. здесь.
Это не баг, а фича. Подробнее см. здесь.
Q2. А что в маздае всё работало?
A2. Включите маздаевскую кодировку CP1251 (см. здесь), заработает и в Linux. Кроме Ё конечно, она и в маздае не работает. А вот если вы в своём маздае используете юникод, то будет работать прям как в любой нормальной ОС, т.е. - не работать.
Это тоже не баг, а фича. Подробнее см. здесь.
Потому, что команда s только устанавливает флаг перехода, но его не сбрасывает. Подробнее см. здесь.
Вы уверенны, что хотите именно этого? Это возможно (см. пример), однако на практике намного лучше и быстрее сделать по другому: при необходимости подгрузить к имеющейся строке ещё одну, а если надо - вывести уже обработанную строчку, причём так, что-бы необработанный хвост продолжал обрабатываться. См. здесь.
Вы можете обсудить этот документ на форуме. Текст предоставляется по лицензии GNU Free Documentation License (Перевод лицензии GFDL).
Вы можете пожертвовать небольшую сумму яндекс-денег на счёт 41001666004238 для оплаты хостинга, интернета, и прочего. Это конечно добровольно, однако это намного улучшит данный документ (у меня будет больше времени для его улучшения). На самом деле, проект часто находится на грани закрытия, ибо никаких денег никогда не приносил, и приносить не будет. Вы можете мне помочь. Спасибо.