Всем привет!
Ни как не могу сообразить... надо в куче файлов сменить содержимое определенной строки строки, файлы - файлы зон. Пробовал sed юзать, но толи лыжи не едут толи....
[console]STR="@ 3600 IN A IP"
SRT2=";@ 3600 IN A IP"
sed "s/$STR/$STR2" file > file.new
sed: -e выражение #1, символ 3: незавершенная команда `s'[/console]
что ему не так? пробелы в строке? как выйти из ситуации, ибо файлов много и руками пройти все не вариант?..
замена содержимого строки
sed "s/$STR/$STR2/" file > file.newТы забыл поставить завершающий слеш. Тебе же об этом прямо русским языком в ошибке написано.
И переменная у тебя SRT2, а в sed ты вызываешь $STR2 (пустую переменную).
P.S. Сперва отладь скрипт где-нибудь, а то рискуешь испортить свои файлы.
Vascom, работаю с копиями
замеченные ошибки - опечатки при создании темы т.к. писал от руки
[console]FOO="@ 3600 IN A IP"
BAR=";@ 3600 IN A IP"
sed sed "s/$FOO/$BAR/" $STD/$ZNAME > $STD/$ZNAME~
mv $STD/$ZNAME~ $STD/$ZNAME[/console]
ошибка нашлась в sed sed... как сразу не заметил не знаю...
Спасибо!
И на самом деле нет нужды создавать временный файл (да ещё и на диске), а затем заменять им основной. Можно же сразу сделать
sed -i -e "s/$FOO/$BAR/" $STD/$ZNAMEVascom, супер! Спасибо, буду знать!
а лучшеМожно же сразу сделать
sed -i
[console]sed -i*~[/console]
тогда sed делает бекап.
не нужно.-e