LINUX.ORG.RU

История изменений

Исправление kaldeon, (текущая версия) :

Отладься в потоке, а потом будешь редактировать inplace.

Я вспомнил как всё было.

Если сразу работать с ~20 файлами, то отладиться в потоке не получится. Нужно смотреть как работает поиск на каждом файле. Так и получилось, что я написал сперва sed '/^PGPASS/ p' bin/*. А он же по умолчанию все строки печатает. Ну значит надо добавить -n.

-n не печатает в стандартный вывод. Я прямо сейчас смотрю в гнутый ман - там так и написано, ни словом больше. Но из этого же не следует, что он не будет печатать в файлы?..

Времени на этот вопрос не было, потому что работающий поиск занял всё пространство в глазах и голове. Хорошо, теперь пишем замену: sed -n '/^PGPASS/ s/old/new/' bin/*. На данный момент стандартный вывод этой команды даст пустоту. Ну и настало время сделать in-place: sed -n -i '' '/^PGPASS/ s/old/new/' bin/*. Всё, файлы очищены. А нужно было убрать -n.

Сложно сказать, какой из этого можно вынести урок, кроме того что это плохой UI. Кажется, что in-place замена и использование stdout в процессе для отладки - просто конфликтующие задачи и нужно вместо stdout использовать что-то более близкое к in-place (например, буферы текстового редактора).

Исходная версия kaldeon, :

Отладься в потоке, а потом будешь редактировать inplace.

Я вспомнил как всё было.

Если сразу работать с ~20 файлами, то отладиться в потоке не получится. Нужно смотреть как работает поиск на каждом файле. Так и получилось, что я написал сперва sed '/^PGPASS/ p' bin/*. А он же по умолчанию все строки печатает. Ну значит надо добавить -n.

-n не печатает в стандартный вывод. Я прямо сейчас смотрю в гнутый ман - там так и написано, ни словом больше. Но из этого же не следует, что он не будет печатать в файлы?

Времени на этот вопрос не было, потому что работающий поиск занял всё пространство в глазах и голове. Хорошо, теперь пишем замену: sed -n '/^PGPASS/ s/old/new/' bin/*. На данный момент стандартный вывод этой команды даст пустоту. Ну и настало время сделать in-place: sed -n -i '' '/^PGPASS/ s/old/new/' bin/*. Всё, файлы очищены. А нужно было убрать -n.

Сложно сказать, какой из этого можно вынести урок, кроме того что это плохой UI. Кажется, что in-place замена и использование stdout в процессе для отладки - просто конфликтующие задачи и нужно вместо stdout использовать что-то более близкое к in-place (например, буферы текстового редактора).