История изменений
Исправление 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 (например, буферы текстового редактора).