The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Дописать вычисленное в конец строки, !*! Аноним, 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]  

  • Дописать вычисленное в конец строки, !*! КуКу, 16:15 , 25-Июн-12 (1)
    Разрешаем дописывай.

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

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

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

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

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

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


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

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

          • Дописать вычисленное в конец строки, !*! ЫЫЫ, 03:29 , 26-Июн-12 (9)
            >[оверквотинг удален]
            >>>> Пробывали писать на каком языке?
            >>> $ 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=".", потом вернуть пробелы  - маразм.


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

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

              • Дописать вычисленное в конец строки, !*! ЫЫЫ, 03:59 , 26-Июн-12 (11)
                > может тогда у ежа спросите?

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


                $ 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


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

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

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

                    по желанию.

  • Дописать вычисленное в конец строки, !*! izvorot, 16:17 , 06-Июл-12 (15)
    > Есть строки вида:
    > 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] -что это?




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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