The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"sed нужно заменить строку по 1 параметру"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [ Отслеживать ]

"sed нужно заменить строку по 1 параметру"  +/
Сообщение от maximka (??) on 15-Май-09, 18:05 
Доброго времени суток!!!
freebsd 7.1, sh
проблема следующего характера:
есть файл с содержимым:
ipfw table 4 add 192.168.5.92
ipfw table 6 add 192.168.1.119
ipfw table 6 add 192.168.2.226
ipfw table 3 add 192.168.3.40
ipfw table 6 add 192.168.5.174
ipfw table 8 add 192.168.4.225
ipfw table 3 add 192.168.2.224
ipfw table 4 add 192.168.3.211
ipfw table 8 add 192.168.1.73
ipfw table 4 add 192.168.0.179
ipfw table 5 add 192.168.1.124
нужно при поиске пользоваться ip но поменять не ip а всю строку на заданную.
sed 's/$ip/ipfw table 4 add any ip/' tables.sh > tmp
у меня получается что он меняет искомое слово и заменяет его на ipfw table 4 add any ip
а он должен заменить всю строку.
В чем загвоздка)?
Заранее спасибо)
P.S. а можно ли так сделать чтобы изменения вносились в тот файл из которого они и берутся.(perl не предлагать)
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "sed нужно заменить строку по 1 параметру"  +/
Сообщение от Pahanivo email(ok) on 15-Май-09, 18:27 
>[оверквотинг удален]
> ipfw table 6 add 192.168.5.174
> ipfw table 8 add 192.168.4.225
> ipfw table 3 add 192.168.2.224
> ipfw table 4 add 192.168.3.211
> ipfw table 8 add 192.168.1.73
> ipfw table 4 add 192.168.0.179
> ipfw table 5 add 192.168.1.124
>нужно при поиске пользоваться ip но поменять не ip а всю строку
>на заданную.
>sed 's/$ip/ipfw table 4 add any ip/' tables.sh > tmp

sed 's/^.* YOU_IP .*$/ipfw table 4 add any YOU_IP/' tables.sh > tmp

> у меня получается что он меняет искомое слово и заменяет его
>на ipfw table 4 add any ip
>а он должен заменить всю строку.
>В чем загвоздка)?
>Заранее спасибо)
>P.S. а можно ли так сделать чтобы изменения вносились в тот файл
>из которого они и берутся.(perl не предлагать)

куда тебе перл - ты до элементарного регекса додуматся не могешь ))))

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "sed нужно заменить строку по 1 параметру"  +/
Сообщение от maximka (??) on 16-Май-09, 11:30 
>[оверквотинг удален]
>> у меня получается что он меняет искомое слово и заменяет его
>>на ipfw table 4 add any ip
>>а он должен заменить всю строку.
>>В чем загвоздка)?
>>Заранее спасибо)
>>P.S. а можно ли так сделать чтобы изменения вносились в тот файл
>>из которого они и берутся.(perl не предлагать)
>
>куда тебе перл - ты до элементарного регекса додуматся не могешь ))))
>

от перла отказался из-за его медлительности.

спасибо за помощь!!!
$w="192.168.5.92 ";
print system("sed 's/^.* $w .*$/ipfw table ww add any $w/' tables.sh > tmp

sed: 1: "s/^.* 192.168.5.92 .*
i ...": unterminated substitute pattern
Syntax error: Unterminated quoted string

из командной строки отработало на ура!!!!
но из скрипта с ошибкой)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "sed нужно заменить строку по 1 параметру"  +/
Сообщение от angra (ok) on 16-Май-09, 18:24 
>от перла отказался из-за его медлительности.

"Плохому танцору штаны виноваты" народная мудрость
"Нечего на зеркало пенять коли рожа крива" народная мудрость
"Нет плохих языков, есть плохие программисты" народная мудрость

>$w="192.168.5.92 ";
>print system("sed 's/^.* $w .*$/ipfw table ww add any $w/' tables.sh > tmp

Вот и пример плохого программиста/админа, которому во всем виноват гнусный ЯП. Этот же гнусный ЯП нагло проинтерполировал _все_ переменные в строке.  Вот ведь какая падла, нет чтобы воспользоваться телепатией и узнать у горе-программиста, что нужно интерполировать, а что нет.

"Учится, учится и еще раз учится" В.И. Ленин

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "sed нужно заменить строку по 1 параметру"  +/
Сообщение от maximka (??) on 16-Май-09, 21:27 
>[оверквотинг удален]
>
>>$w="192.168.5.92 ";
>>print system("sed 's/^.* $w .*$/ipfw table ww add any $w/' tables.sh > tmp
>
>Вот и пример плохого программиста/админа, которому во всем виноват гнусный ЯП. Этот
>же гнусный ЯП нагло проинтерполировал _все_ переменные в строке.  Вот
>ведь какая падла, нет чтобы воспользоваться телепатией и узнать у горе-программиста,
>что нужно интерполировать, а что нет.
>
>"Учится, учится и еще раз учится" В.И. Ленин

Спасибо за помощь)!
Вам трактаты писать нужно, талант!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "sed нужно заменить строку по 1 параметру"  +/
Сообщение от maximka (??) on 18-Май-09, 13:35 

$w="192.168.5.92";
$ww="sed  's/^.*$w*.\$/wwwwwwwwwwwwwwwwwwwwipfw table ww add any w/' tables.sh > tmp";

print system($ww);

Вдруг кому пригодится)
А то умников развелось много(!!!

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру