Доброго времени суток!!!
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 не предлагать)
>[оверквотинг удален]
> 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 > tmpsed 's/^.* YOU_IP .*$/ipfw table 4 add any YOU_IP/' tables.sh > tmp
> у меня получается что он меняет искомое слово и заменяет его
>на ipfw table 4 add any ip
>а он должен заменить всю строку.
>В чем загвоздка)?
>Заранее спасибо)
>P.S. а можно ли так сделать чтобы изменения вносились в тот файл
>из которого они и берутся.(perl не предлагать)куда тебе перл - ты до элементарного регекса додуматся не могешь ))))
>[оверквотинг удален]
>> у меня получается что он меняет искомое слово и заменяет его
>>на 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 > tmpsed: 1: "s/^.* 192.168.5.92 .*
i ...": unterminated substitute pattern
Syntax error: Unterminated quoted stringиз командной строки отработало на ура!!!!
но из скрипта с ошибкой)
>от перла отказался из-за его медлительности."Плохому танцору штаны виноваты" народная мудрость
"Нечего на зеркало пенять коли рожа крива" народная мудрость
"Нет плохих языков, есть плохие программисты" народная мудрость>$w="192.168.5.92 ";
>print system("sed 's/^.* $w .*$/ipfw table ww add any $w/' tables.sh > tmpВот и пример плохого программиста/админа, которому во всем виноват гнусный ЯП. Этот же гнусный ЯП нагло проинтерполировал _все_ переменные в строке. Вот ведь какая падла, нет чтобы воспользоваться телепатией и узнать у горе-программиста, что нужно интерполировать, а что нет.
"Учится, учится и еще раз учится" В.И. Ленин
>[оверквотинг удален]
>
>>$w="192.168.5.92 ";
>>print system("sed 's/^.* $w .*$/ipfw table ww add any $w/' tables.sh > tmp
>
>Вот и пример плохого программиста/админа, которому во всем виноват гнусный ЯП. Этот
>же гнусный ЯП нагло проинтерполировал _все_ переменные в строке. Вот
>ведь какая падла, нет чтобы воспользоваться телепатией и узнать у горе-программиста,
>что нужно интерполировать, а что нет.
>
>"Учится, учится и еще раз учится" В.И. ЛенинСпасибо за помощь)!
Вам трактаты писать нужно, талант!
$w="192.168.5.92";
$ww="sed 's/^.*$w*.\$/wwwwwwwwwwwwwwwwwwwwipfw table ww add any w/' tables.sh > tmp";print system($ww);
Вдруг кому пригодится)
А то умников развелось много(!!!