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

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

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

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

Добавлено: 13 апр 2011, 08:42
leave
sed -i -e 's/что/на_что/' file.txt

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

Добавлено: 18 апр 2011, 09:54
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:

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

Добавлено: 18 апр 2011, 15:05
mend0za

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

sed -i -e 's/#UPSNAME/#UPSNAME '$NAME'/'
Откройте для себя удивительный мир кавычек Bourne Shell. И отличие одиночной кавычки от двойной.

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

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

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

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

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

Добавлено: 21 апр 2011, 08:18
mend0za
Два способа - либо указать номер строки, либо более точно указать шаблон поиска и замены

Например:

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

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