Замена строчек в файле

Все о программировании под *nix
Alex87
Заглянувший
Сообщения: 9
Зарегистрирован: 12 ноя 2010, 09:18

Замена строчек в файле

Сообщение Alex87 »

Здраствуйте, скажите пожалуста как и каким образом можно заменить уже известную строку(т.е. что в строке написано) в файле.
и как это сделать из скрипта?

leave
Неотъемлемая часть форума
Сообщения: 1055
Зарегистрирован: 25 окт 2006, 14:50
Откуда: minsk
Контактная информация:

Re: Замена строчек в файле

Сообщение leave »

sed -i -e 's/что/на_что/' file.txt

Alex87
Заглянувший
Сообщения: 9
Зарегистрирован: 12 ноя 2010, 09:18

Re: Замена строчек в файле

Сообщение Alex87 »

а еще скажите пожалуйста,вот у меня в скрипте пишу,
мне надо заменить "DEVICE /dev/ttyS0" на "DEVICE ",

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

sed -i -e 's/"DEVICE /dev/ttyS0"/"DEVICE "/'

он не меняет + еще когда пишу:

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

echo "Enter name ups:"
read NAME
sed -i -e 's/#UPSNAME/#UPSNAME $NAME/'

он и это отказывается делать - вместо нормального имени пишет $NAME.
я чот ваще не понимаю .. :damn:

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Re: Замена строчек в файле

Сообщение mend0za »

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

sed -i -e 's/#UPSNAME/#UPSNAME '$NAME'/'


Откройте для себя удивительный мир кавычек Bourne Shell. И отличие одиночной кавычки от двойной.

Alex87
Заглянувший
Сообщения: 9
Зарегистрирован: 12 ноя 2010, 09:18

Re: Замена строчек в файле

Сообщение Alex87 »

:roll: да действительно. Но еще один момент чот не понял, как сделать однократную замену самого первого совпадения во всем файле?

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

sed -i -e 's/#UPSNAME/#UPSNAME '$NAME'/'

делая так он ищет первое совпадение в каждой строке - если я так понял ман. вот и получается у меня в двух местах замена... в первом где надо и все путем, а во втором не надо заменять...
в строчки эти как раз содержат #UPSNAME:
1) #UPSNAME
2) #UPSNAME UPS_IDEN

Аватара пользователя
mend0za
Неотъемлемая часть форума
Сообщения: 2332
Зарегистрирован: 30 авг 2002, 12:33
Откуда: Minsk

Re: Замена строчек в файле

Сообщение mend0za »

Два способа - либо указать номер строки, либо более точно указать шаблон поиска и замены

Например:

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

sed -i -e '10 s/#UPSNAME/#UPSNAME '$NAME'/'
или
sed -i -e 's/#UPSNAME$/#UPSNAME '$NAME'/'


Ответить