alex_x_st Опубликовано 18 октября, 2005 Жалоба Опубликовано 18 октября, 2005 Начальные условия: Есть текстовый файл (.forward) в котором располагается список e-mail адресов: user1@email.ru user2@email.ru и т.д. Задача: Как удалить заданую строчку userX@email.ru при помощи короткой консольной команды? PS: Использовал: "sed -e /s/userX@email.ru//g .forward" - выводит на экран то что нужно, но файл при этом не изменяется. Если в конце добавить "> .forward" то файл станет по объему станет равен 0 байтам Если ">> .forward" то соответственно к имеющейся инфе допишется то что необходимо. Может есть другие элегантные решения? Цитата
John Опубликовано 18 октября, 2005 Жалоба Опубликовано 18 октября, 2005 Try: sed -i '/userX@email.ru/d' .forward На моей Федоре пашет вроде. RTFM rules! Цитата
alex_x_st Опубликовано 18 октября, 2005 Автор Жалоба Опубликовано 18 октября, 2005 Ключ -i в sed я не обнаружил, видно старая версия (RH 7.3) использовал ключ -e, результат выполнения команды выводится на экран (нужный резултат), но запись в файл не производилась. пришлось использовать другую команду: cat .forward|grep -v userX@email.ru >.forward так работает Цитата
John Опубликовано 18 октября, 2005 Жалоба Опубликовано 18 октября, 2005 А вот ИМХО большой вопрос, корректно ли так писать: cat SOME_FILE | grep ... >SOMEFILE Что-то мнится мне, что работать это будет не всегда... Как напр в случае "обнуления" файла в вашем примере... Цитата
John Опубликовано 18 октября, 2005 Жалоба Опубликовано 18 октября, 2005 alex_x_st писал(а) вт, 18 октября 2005 11:14 Ключ -i в sed я не обнаружил, видно старая версия (RH 7.3) использовал ключ -e, результат выполнения команды выводится на экран (нужный резултат), но запись в файл не производилась. Ну тады так: sed '/userX@email.ru/d' .forward >.forward.tmp mv -f .forward.tmp .forward PS -i[sUFFIX], --in-place[=SUFFIX] - edit files in place (makes backup if extension supplied) также прочел, что реализация -i через временный файл в GNU. -e я вообще не использую. Зачем? Цитата
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.