Замена значений в файле

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
krendelek007
рядовой
Сообщения: 39
Зарегистрирован: 2009-10-12 21:35:04

Замена значений в файле

Непрочитанное сообщение krendelek007 » 2010-06-18 13:19:14

Возможно кому-то вопрос покажется до безобразия простым, но я вынужден спросить )

есть файл с содержанием:

Код: Выделить всё

internet_A = 1
internet_B = 0
Как из командной строки заменить первую строку, на:

Код: Выделить всё

internet_A = 0
или вторую например на:

Код: Выделить всё

internet_B = 1
Заранее премного благодарен

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Burner
лейтенант
Сообщения: 693
Зарегистрирован: 2009-06-14 7:02:26

Re: Замена значений в файле

Непрочитанное сообщение Burner » 2010-06-18 13:47:38

sed -i file 's/internet_A = 1/internet_A = 0/g'

Аватара пользователя
krendelek007
рядовой
Сообщения: 39
Зарегистрирован: 2009-10-12 21:35:04

Re: Замена значений в файле

Непрочитанное сообщение krendelek007 » 2010-06-18 15:19:17

Burner писал(а):sed -i file 's/internet_A = 1/internet_A = 0/g'
Спасибо за наводку, но что-то ругается:

Код: Выделить всё

sed: -I or -i may not be used with stdin
Попытался порыть в интернете, но не понял как побороть. :(

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: Замена значений в файле

Непрочитанное сообщение BlackCat » 2010-06-18 22:40:27

krendelek007, sed может быть использован в 2х режимах: чтение из файла, если вы указали ему файл для обработки, и чтение из т.н. стандартного ввода (stdin), если файл для обработки не указан. Так-же, по-умолчанию, sed результат обработки выводит на стандартный вывод (stdout), чаще всего на терминал.
Опция "-i" (сокращение от inline) заставляет sed при обработке файла записывать результат в этот же файл, как бы редактируя его.

Код: Выделить всё

sed: -I or -i may not be used with stdin
переводится как "опция -i не используется при чтении из стандартного ввода". А точнее, sed ругается на то, что ему говорят "пиши назад в файл", а сам файл не указали. Или, проще говоря, анализируя параметры, sed не понял что ему указали файл для редактирования.
Если вам необходимо отредактировать файл "file.cfg", то запускать sed следует вот таким вот образом:

Код: Выделить всё

sed "s/internet_A = 1/internet_A = 0/g" -i bak file.txt
Ещё полезно ознакомиться со справкой: man sed.

Burner
лейтенант
Сообщения: 693
Зарегистрирован: 2009-06-14 7:02:26

Re: Замена значений в файле

Непрочитанное сообщение Burner » 2010-06-19 1:11:24

да я не в том порядке аргументы поставил

инкогникто
проходил мимо

Re: Замена значений в файле

Непрочитанное сообщение инкогникто » 2010-06-20 19:34:34

sed -i -e 'что-то делаем' test.txt