Есть строки вида:CONNECT: 25.06.2012 14:37:52 172.16.17.134
надо дописать в конец этой строки номер подсети: как уравнение (1 + 2*SUBNET+(HOST ? 1 : 0)
SUBNET - это третий октет
HOST - 4-й октетТ.е. для строки выше это должно выглядеть как-то так
уравнение (1+2*17+1) и получаемая строка
CONNECT: 25.06.2012 14:37:52 172.16.17.34 [36]
Разрешаем дописывай.А если по делу, то вопрос в чем?
Пробывали писать на каком языке?
> Разрешаем дописывай.
> А если по делу, то вопрос в чем?
> Пробывали писать на каком языке?$ echo "CONNECT: 25.06.2012 14:37:52 172.16.17.134" | something.sh
CONNECT: 25.06.2012 14:37:52 172.16.17.134 [36]
>> Разрешаем дописывай.
>> А если по делу, то вопрос в чем?
>> Пробывали писать на каком языке?
> $ echo "CONNECT: 25.06.2012 14:37:52 172.16.17.134" | something.sh
> CONNECT: 25.06.2012 14:37:52 172.16.17.134 [36]Информативно, предполагаю что писать нужно на sh/bash.
Может покажете текст наработок "something.sh"?
Алгоритм, как я полагаю, прост.
На входе ловим строку, с помощью awk вычленяем нужные числа в переменные, проводим математические операции с помощью expr и возвращаем исходную строку с дополнением.
> Алгоритм, как я полагаю, прост.
> На входе ловим строку, с помощью awk вычленяем нужные числа в переменные,
> проводим математические операции с помощью expr и возвращаем исходную строку с
> дополнением.и форматируем вывод с помощью sed.
>[оверквотинг удален]
>>> А если по делу, то вопрос в чем?
>>> Пробывали писать на каком языке?
>> $ echo "CONNECT: 25.06.2012 14:37:52 172.16.17.134" | something.sh
>> CONNECT: 25.06.2012 14:37:52 172.16.17.134 [36]
> Информативно, предполагаю что писать нужно на sh/bash.
> Может покажете текст наработок "something.sh"?
> Алгоритм, как я полагаю, прост.
> На входе ловим строку, с помощью awk вычленяем нужные числа в переменные,
> проводим математические операции с помощью expr и возвращаем исходную строку с
> дополнением.одного awk хватит на все. конвеер никто не отменял.
>[оверквотинг удален]
>>>> Пробывали писать на каком языке?
>>> $ echo "CONNECT: 25.06.2012 14:37:52 172.16.17.134" | something.sh
>>> CONNECT: 25.06.2012 14:37:52 172.16.17.134 [36]
>> Информативно, предполагаю что писать нужно на sh/bash.
>> Может покажете текст наработок "something.sh"?
>> Алгоритм, как я полагаю, прост.
>> На входе ловим строку, с помощью awk вычленяем нужные числа в переменные,
>> проводим математические операции с помощью expr и возвращаем исходную строку с
>> дополнением.
> одного awk хватит на все. конвеер никто не отменял.
>[оверквотинг удален]
>>>> Пробывали писать на каком языке?
>>> $ echo "CONNECT: 25.06.2012 14:37:52 172.16.17.134" | something.sh
>>> CONNECT: 25.06.2012 14:37:52 172.16.17.134 [36]
>> Информативно, предполагаю что писать нужно на sh/bash.
>> Может покажете текст наработок "something.sh"?
>> Алгоритм, как я полагаю, прост.
>> На входе ловим строку, с помощью awk вычленяем нужные числа в переменные,
>> проводим математические операции с помощью expr и возвращаем исходную строку с
>> дополнением.
> одного awk хватит на все. конвеер никто не отменял.
echo "CONNECT: 25.06.2012 14:37:52 172.16.17.134 DATA" | \
tr "." " " | \
cut -d" " -f8,9 | \
awk '{z=0; x=$1; if ($2 > 127) { z=1 }; y=(1+2*x+z); print y}';
361. FS="." - нельзя, т.к. после последнего октета пробел.
2. Ежу понятно, что после cut | tr входная строка уничтожается, по этому дописывать не куда.
3. Заменить все пробелы на _, потом FS=".", потом вернуть пробелы - маразм.
>[оверквотинг удален]
>> одного awk хватит на все. конвеер никто не отменял.
>
> echo "CONNECT: 25.06.2012 14:37:52 172.16.17.134 DATA" | \
> tr "." " " | \
> cut -d" " -f8,9 | \
> awk '{z=0; x=$1; if ($2 > 127)
> { z=1 }; y=(1+2*x+z); print y}';
> 36
>
> 1. FS="." - нельзя, т.к. после последнего октета пробел.не соизволите ли Вы Сударь, пояснить ход Ваше витиеватой мысли, дабы Мы, простые Смертные, смогли бы наконец-то озариться величием Вашего вдохновения, и смогли понять О КАКОЙ ХЕРНЕ СЕЙЧАС РЕЧЬ ШЛА?
> 2. Ежу понятно, что после cut | tr входная строка уничтожается, по
может тогда у ежа спросите?
> этому дописывать не куда.
ну разве только он уже попоисал...
> 3. Заменить все пробелы на _, потом FS=".", потом вернуть пробелы
> - маразм.теперь Вы что-то начинаете понимать...
> может тогда у ежа спросите?Всё спасибо, все свободны, а тебе отдельный респект, за терпение моей гадской морды ;)
$ echo "CONNECT: 25.06.2012 14:37:52 172.16.17.134 DATA" | \
awk -F"." '{z=0; x=$5; if ($6 > 127) { z=1 }; y=(1+2*x+z); printf "%s %d\n", $NL, y}'CONNECT: 25.06.2012 14:37:52 172.16.17.134 DATA 36
>> может тогда у ежа спросите?
> Всё спасибо, все свободны, а тебе отдельный респект, за терпение моей гадской
> морды ;)
>
> echo "CONNECT: 25.06.2012 14:37:52 172.16.17.134 DATA" | \
> awk -F"." '{z=0; x=$5; if ($6 >
> 127) { z=1 }; y=(1+2*x+z); printf "%s %d\n", $NL, y}'
>обожаю гадские морды. особенно такие умные, как ты ). рад что все получилось (хотя я несколько другой подход к решению предполагал. твой - даже лучше).
>[оверквотинг удален]
>> Всё спасибо, все свободны, а тебе отдельный респект, за терпение моей гадской
>> морды ;)
>>
>> echo "CONNECT: 25.06.2012 14:37:52 172.16.17.134 DATA" | \
>> awk -F"." '{z=0; x=$5; if ($6 >
>> 127) { z=1 }; y=(1+2*x+z); printf "%s %d\n", $NL, y}'
>>
> обожаю гадские морды. особенно такие умные, как ты ). рад что все
> получилось (хотя я несколько другой подход к решению предполагал. твой
> - даже лучше).- оптимизация awk-скрипта
- та же задача ч/з sedпо желанию.
>>[оверквотинг удален]
> - оптимизация awk-скрипта
> - та же задача ч/з sed
> по желанию.Показывай.
> Есть строки вида:
> CONNECT: 25.06.2012 14:37:52 172.16.17.134
> надо дописать в конец этой строки номер подсети: как уравнение (1 +
> 2*SUBNET+(HOST ? 1 : 0)
> SUBNET - это третий октет
> HOST - 4-й октет
> Т.е. для строки выше это должно выглядеть как-то так
> уравнение (1+2*17+1) и получаемая строка
> CONNECT: 25.06.2012 14:37:52 172.16.17.34 [36]вконце дописать номер подсети??? Это типа маску??? Я совсем не понимаю цифру [36] -что это?