The OpenNET Project / Index page

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

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

"Дописать вычисленное в конец строки"  +/
Сообщение от Аноним (??) on 25-Июн-12, 14:56 
Есть строки вида:

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]  

Ответить | Правка | Cообщить модератору

Оглавление

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


1. "Дописать вычисленное в конец строки"  +/
Сообщение от КуКу (ok) on 25-Июн-12, 16:15 
Разрешаем дописывай.

А если по делу, то вопрос в чем?
Пробывали писать на каком языке?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Дописать вычисленное в конец строки"  +/
Сообщение от Аноним (??) on 25-Июн-12, 17:48 
> Разрешаем дописывай.
> А если по делу, то вопрос в чем?
> Пробывали писать на каком языке?

$ 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]

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Дописать вычисленное в конец строки"  +/
Сообщение от КуКу (ok) on 25-Июн-12, 23:52 
>> Разрешаем дописывай.
>> А если по делу, то вопрос в чем?
>> Пробывали писать на каком языке?
> $ 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 и возвращаем исходную строку с дополнением.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Дописать вычисленное в конец строки"  +/
Сообщение от LSTemp (ok) on 26-Июн-12, 00:40 
> Алгоритм, как я полагаю, прост.
> На входе ловим строку, с помощью awk вычленяем нужные числа в переменные,
> проводим математические операции с помощью expr и возвращаем исходную строку с
> дополнением.

и форматируем вывод с помощью sed.


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Дописать вычисленное в конец строки"  +1 +/
Сообщение от LSTemp (ok) on 26-Июн-12, 03:17 
>[оверквотинг удален]
>>> А если по делу, то вопрос в чем?
>>> Пробывали писать на каком языке?
>> $ 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 хватит на все. конвеер никто не отменял.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

8. "Дописать вычисленное в конец строки"  +/
Сообщение от LSTemp (ok) on 26-Июн-12, 03:20 
>[оверквотинг удален]
>>>> Пробывали писать на каком языке?
>>> $ 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 хватит на все. конвеер никто не отменял.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Дописать вычисленное в конец строки"  +/
Сообщение от ЫЫЫ (ok) on 26-Июн-12, 03:29 
>[оверквотинг удален]
>>>> Пробывали писать на каком языке?
>>> $ 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}';
36

1. FS="." - нельзя, т.к. после последнего октета пробел.
2. Ежу понятно, что после cut | tr входная строка уничтожается, по этому дописывать не куда.
3. Заменить все пробелы на _, потом FS=".", потом вернуть пробелы  - маразм.


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

10. "Дописать вычисленное в конец строки"  +/
Сообщение от LSTemp (ok) on 26-Июн-12, 03:48 
>[оверквотинг удален]
>> одного 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=".", потом вернуть пробелы  
> - маразм.

теперь Вы что-то начинаете понимать...

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Дописать вычисленное в конец строки"  +/
Сообщение от ЫЫЫ (ok) on 26-Июн-12, 03:59 
> может тогда у ежа спросите?

Всё спасибо, все свободны, а тебе отдельный респект, за терпение моей гадской морды ;)


$ 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


Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

12. "Дописать вычисленное в конец строки"  +/
Сообщение от LSTemp (ok) on 26-Июн-12, 04:03 
>> может тогда у ежа спросите?
> Всё спасибо, все свободны, а тебе отдельный респект, за терпение моей гадской
> морды ;)
>
 
> 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}'
>

обожаю гадские морды. особенно такие умные, как ты ). рад что все получилось (хотя я несколько другой подход к решению предполагал. твой  - даже лучше).

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Дописать вычисленное в конец строки"  +/
Сообщение от LSTemp (ok) on 26-Июн-12, 04:14 
>[оверквотинг удален]
>> Всё спасибо, все свободны, а тебе отдельный респект, за терпение моей гадской
>> морды ;)
>>
 
>> 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

по желанию.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Дописать вычисленное в конец строки"  +/
Сообщение от ЫЫЫ (ok) on 26-Июн-12, 21:28 
>>[оверквотинг удален]
> - оптимизация awk-скрипта
> - та же задача ч/з sed
> по желанию.

Показывай.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "Дописать вычисленное в конец строки"  +/
Сообщение от izvorot (ok) on 06-Июл-12, 16:17 
> Есть строки вида:
> 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] -что это?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

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

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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