Страница 1 из 1

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

Добавлено: 2010-06-18 13:19:14
krendelek007
Возможно кому-то вопрос покажется до безобразия простым, но я вынужден спросить )

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

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

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

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

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

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

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

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

Добавлено: 2010-06-18 13:47:38
Burner
sed -i file 's/internet_A = 1/internet_A = 0/g'

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

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

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

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

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

Добавлено: 2010-06-18 22:40:27
BlackCat
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.

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

Добавлено: 2010-06-19 1:11:24
Burner
да я не в том порядке аргументы поставил

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

Добавлено: 2010-06-20 19:34:34
инкогникто
sed -i -e 'что-то делаем' test.txt