1. bash / Говнокод #3223

    −130

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    #!/bin/bash
    
    curl http://www.radioroks.com.ua/online.php | grep '<b>' > /tmp/roks
    
    sed -e 's/<[^>]*>//g' /tmp/roks > /tmp/roks2
    sed -e 's/&middot;/- /g' /tmp/roks2 > /tmp/roks
    sed -e 's/\t//g' /tmp/roks > /tmp/roks2
    
    sed -e 's/\:-/\:\
    -/g' /tmp/roks2 > /tmp/roks
    
    cat /tmp/roks | head -n $1

    Кажется, писал под утро. Не вдуплился юзать только 1 файл, а жонглировал /tmp/roks и /tmp/roks2 ...

    Запостил: Anderson, 14 Мая 2010

    Комментарии (10) RSS

    • Зачот!:)
      Если чо, head тоже не нужен.
      Ответить
      • вы наверное хотели сказать "cat не нужен"

        выглядит как обычный, на быструю руку писанный скрипт. реально проглядывается как оно пошагово пивался - тот же cat включая.
        Ответить
        • И cat не нужен.
          И grep первый тоже не нужен:)

          На быструю руку писанный скрипт — это нормально, надо быстро соорудить что-то, что решает задачу. Тут единственная бага в том, что люди привыкли к однострочным sed-программам, которые только заменяют одно на другое.
          А sed — он мощнее.
          Ответить
          • sed то он мощен, но в данном случае был бы awk более правильным кандидатом.

            но блин обсуждения "как оно могло бы быть лучше" занимают часто больше времени чем само по себе написание скрипта.

            я бы на шелле и оставил - потому что все равно тривиально. и эффективность здесь сильно не нужна.
            Ответить
            • Да нафига тут awk??? Чистая задача для sed! По крайней мере, как я понимаю, выдрать в удобочитаемом виде плейлист путем выкусывания всего ненужного.
              Ответить
              • awk может заменить шаг с grep. d в sed не очень читабельно. а в awk это будет просто `/regexp/ { ...; print }`
                Ответить
                • А зачем d в sed? Тот же самый адресный диапазон для команд. Что-то типа того (я тут по-честному заменяю <br> на \n; чтобы сохранить логику, потом пустые строки можно выкусить):
                  curl http://www.radioroks.com.ua/online.php| sed -n '/<b>/{s/<br>/\n/g;s/<[^>]*>//g;s/&middot;/- /g;s/\t//g;p}'
                  Ответить
                  • да блин. угаварил :D

                    ЗЫ ну вот что-то новое про sed еще узнал ;)
                    ЗЗЫ мое плохое знание sed/awk объясняется тем что все что у меня не лезет в шел, я на перле пишу.
                    Ответить
                    • Мне чем нравятся адресные диапазоны в sed (в отличие от того же awk), что тут можно копать от забора до обеда — от первой строки до той, в которой встретится что-то, или наоборот, от чего-то и до конца.
                      А перл — это да, перл — это голова. Еще б был везде, я б на нем только и писал:)

                      PS. Я, собственно, только недавно что-то серьезное на sed стал писать. Выкусывалку внешних ключей из описания схемы, например:)))

                      /[[:space:]]*CONSTRAINT "[^"]*" FOREIGN KEY/{
                        :inforkey
                        /,$/{
                          s/,$//
                          w forkey
                          d
                        }
                        w forkey
                        n
                        /^[[:space:]]*)/b out
                        b inforkey
                        :out
                        x;s/,$//;p;d
                      }
                      ${
                        g;s/^\n//;p
                      }
                      H


                      PS. Обещают автоматически определить язык кода, посмотрим:)))
                      Ответить
        • И да «писал под утро» — стандартная отмазка, уже не катит! Ночью спать надо, а не говнокоды писать!:)
          Ответить

    Добавить комментарий