Собственно вопрос, сделал на файлах с одинаковым содержанием:
sed -i 's|/local||' READMEcp
и
sed -i 's|/local||g' README
получил один и тот же результат,
хотя 1 должен, как я всегда думал, удалить только одно найденное, а не все (g, т.е. global) или все не так и имеется в виду для седа последняя команда, как все вхождений в одной строке, но по всему файлу?
sed - строчный редактор, у него объект приложения сил - строка, а не файл. Параметр g можно посмотреть в мане, а там написано Copy/append hold space to pattern space.
Может я и не совсем прав, но опции -e позволяют задать несколько команд sed'а. Вроде это тоже самое, что перечислять из через ";", но позволяет более чётко отделить блоки.
Кстати, в sed faq дан более изящный вариант решения вашей задачи.
Я там наворотил цикл, а можно было просто:
sed -e '1s/\/local/--/;t' -e '1,/\/local/s//--/'
То есть для первой строки s-выражение и выход, если совпало. Для остальных строк задан диапазон строк от первой до (запятая) совпадения с регулярным выражением. GNU sed позволяет это записать короче: