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 я вообще не использую. Зачем? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.