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

    −116

    1. 1
    2. 2
    for i in `seq 1 10000`; do echo $i; done | parallel --gnu sh -c ':;echo {}; python getreq.py {} >olymp-{}.html'
    (for i in olymp-*.html; do echo `md5sum $i`; done) | sort | awk '{ print $2, $1 }' | uniq -f 1 | awk '{ print $1 }' | xargs -I{} -n 1 sh -c ":;(cat {} | egrep -o 'question__section-name.*?</div>' | sed 's/question__section-name\">//g' | sed 's/<\/div>//g' | tr -d '\n'); echo \ {}" | sort | awk '{ print $(NF)}' | xargs -I{} -n 1 cat {} >>total2.html

    Скачал все задачки универсиады и собрал в один файлик.
    Смотреть страшно

    Запостил: allocator, 25 Марта 2015

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

    • seq, parallel... прямо как в какой-нибудь функциональщине...
      Ответить
    • write once
      Ответить
      • Write once, run once and forget. Т.е. не говно. Как бы ужасно оно не выглядело.
        Ответить
        • ни в коем случае не говно, требований к поддержке же в задаче не было.
          Ответить
    • жесть. кто-то по пьяни шеллствовал? - на трезвую голову `for i in `seq 1 10000`; do echo $i; done` и `echo `md5sum $i`` не пишут.

      ЗЫ про uniq -f не знал.
      Ответить
      • md5sum olymp-*.html же прокатит вместо этой фигни в скобках? Или я сегодня туплю и неправильно понял задумку автора?
        Ответить
        • естественно покатит. у md5sum стабильный интерфейс на stdout: строка <hash> <file-name> для каждого входного файла.
          Ответить
      • Спасибо! теперь однострочные высеры будут немножко короче :)

        Меня больше удивило поведение parallel

        $ echo 1 | parallel --gnu sh -c 'echo {}'

        $ echo 1 | parallel --gnu sh -c ':;echo {}'
        1

        первая команда выводит пустоту, вторая работает отлично.
        Ответить
        • почему я parallel и не пользуюсь. в теории прога должна быть полезной. но реализация совсем кривая. можно прям таки сказать гнутая.

          если мне что надо параллелить (редко) то я как правило просто бью на части, и части секвенциально запускаю (`&` + `wait`). для run-once батчей, +/-5 минут большой роли не играют.
          Ответить
    • xargs -I{} -n 1 cat {}


      блин, в конце стоит самый сочный Г!

      конкатенация катов!
      Ответить

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