The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Вопросы по работе xargs, !*! universite, 10-Янв-14, 16:24  [смотреть все]
1) Нужно переименовать список директорий из файла $dir_list

Так не работает:

#grep -v ^# $dir_list | xargs -n 1  echo mv ${1} ${1}-OFF

Так работает:

for dir in `grep -v ^# $dir_list`; do
    echo mv ${dir} ${dir}-OFF
done

2) Нужно проверить статус (код ответа по http) списка доменов
Так не работает:

awk -F"/" '{print $6;}' result.log | xargs -n 1 curl -s -I $1 | head -1 | awk '{print $2}'

Получаем ответ только первого элемента списка  awk -F"/" '{print $6;}' result.log , а остальные два десятка элементов игнорируются.

  • Вопросы по работе xargs, !*! universite, 16:29 , 10-Янв-14 (1)

    > 2) Нужно проверить статус (код ответа по http) списка доменов
    > Так не работает:
    >
    awk -F"/" '{print $6;}' result.log | xargs -n 1 curl -s -I 
    > $1 | head -1 | awk '{print $2}'
    >

    Нужно логику изменить.
    ибо


    awk -F"/" '{print $6;}' result.log | xargs -n 1 echo $1

    отдает список доменов полностью...
    • Вопросы по работе xargs, !*! Andrey Mitrofanov, 19:00 , 10-Янв-14 (7)
      >> 2) Нужно проверить статус (код ответа по http) списка доменов
      >> Так не работает:
      >> | xargs -n 1 curl -s -I $1 | head -1 | awk '{print $2}'

      Ты, видимо имел в виду -

      ...|xargs -I{} --n1 bash -c "curl -s -I {} | head -1" |...

      > Нужно логику изменить.
      > ибо [ code]
      > отдает список доменов полностью...

      Да, не. Нужно понимать, что-где. Что $1, который ты дал xargs-у будет подставлен не им, а шелом. И вывод xargs-а будет конкатенауией всех запушенных curl-ов. И head -1 от этой сонкатенации будет именно результат (первая строка) только от первого curl-a

      .....
      На сладкое:

      <result.log gawk -F/ '{arr[++nn]=$6}END{FS=" ";for(i=1;i<=nn;i++){cmd="curl -s -I "$6";cmd|getline;close(cmd);print $2}'

      • Вопросы по работе xargs, !*! Andrey Mitrofanov, 19:12 , 10-Янв-14 (8)
        > .....
        > На сладкое:
        > <result.log gawk -F/ '{arr[++nn]=$6}END{FS=" ";for(i=1;i<=nn;i++){cmd="curl -s -I "$6";cmd|getline;close(cmd);print 2}'

        Агкхр... Скука какая.

        <result.log gawk -F/ '{arr[++nn]=$6}END{FS=" ";for(i=1;i<=nn;i++){cmd="curl -s -I "arr[i];cmd|getline;close(cmd);print$2}'

        • Вопросы по работе xargs, !*! universite, 14:32 , 11-Янв-14 (16)
          >> .....
          >> На сладкое:
          >> <result.log gawk -F/ '{arr[++nn]=$6}END{FS=" ";for(i=1;i<=nn;i++){cmd="curl -s -I "$6";cmd|getline;close(cmd);print 2}'
          > Агкхр... Скука какая.
          > <result.log gawk -F/ '{arr[++nn]=$6}END{FS=" ";for(i=1;i<=nn;i++){cmd="curl -s -I "arr[i];cmd|getline;close(cmd);print$2}'

          После


          print$2}
                         ^ unexpected newline or end of string

          }'  --> }}'

  • Вопросы по работе xargs, !*! pavlinux, 17:36 , 10-Янв-14 (2)
    >
    awk -F"/" '{print $6;}' result.log | xargs -n 1 curl -s -I $1 | head -1 | awk '{print $2}' 
    >

    Если в скрипте 2 и более раз используется одна и та же утиль, то это ошибка.


    > Получаем ответ только первого элемента списка  awk -F"/" '{print $6;}' result.log ,
    > а остальные два десятка элементов игнорируются.

    Отседа вывод: нужно обрабатывать возврат каждой отдельно  

    for i in `awk -F"/" '{print $6;}' result.log`
       do
          res=$(curl -s -I $i);
          if [ $res == че-надо ]
              echo $res | head -1 | cut -d" " -f2;
          else
              continue;  
    done
    ...
    как-то так

    • Вопросы по работе xargs, !*! universite, 18:01 , 10-Янв-14 (3)
      >> Получаем ответ только первого элемента списка  awk -F"/" '{print $6;}' result.log ,
      >> а остальные два десятка элементов игнорируются.
      > Отседа вывод: нужно обрабатывать возврат каждой отдельно

      Благодарю.
      Скрипт теперь выглядит так:


      for i in `awk -F"/" '{print $6;}' result.log`; do
          echo -e "$i\t\t`curl -s -I $i | head -1 | cut -d" " -f2;`"
      done

      Скорость выполнения соответствующих команд равнозначна:

      time cut -d"/" -f6 result.log
      time awk -F"/" '{print $6;}' result.log

      Возможно при обработке гигабайтных файлов будут отличия...
      • Вопросы по работе xargs, !*! pavlinux, 18:07 , 10-Янв-14 (4)
        > Возможно при обработке гигабайтных файлов будут отличия...

        Ты ж знаешь, - как начинаются гигабайты нужно врубать sed.
        Но у тебя всё равно узким местом будет curl, поэтому спасут только Perl/Ruby/Python/...

        • Вопросы по работе xargs, !*! universite, 18:20 , 10-Янв-14 (5)
          >> Возможно при обработке гигабайтных файлов будут отличия...
          > Ты ж знаешь, - как начинаются гигабайты нужно врубать sed.
          > Но у тебя всё равно узким местом будет curl, поэтому спасут только
          > Perl/Ruby/Python/...

          В данный момент, да однопоточно.
          Но я же могу использовать & и писать результат в отдельный лог.

          curl самый надежный консольный http клиент.
          Для Perl/Ruby/Python/ нужно подключать модули и чем сложнее и навороченнее сайт, тем больше модулей надо подключать :)


          • Вопросы по работе xargs, !*! pavlinux, 22:00 , 10-Янв-14 (15)
            > curl самый надежный консольный http клиент.
            > Для Perl/Ruby/Python/ нужно подключать модули и чем сложнее и навороченнее сайт, тем
            > больше модулей надо подключать :)

            Когда пойдут гигабайтные логи, задумаешься, почему сразу на перлерубипитоне не написал.

    • Вопросы по работе xargs, !*! Andrey Mitrofanov, 18:36 , 10-Янв-14 (6)
      >>
      awk -F"/" '{print $6;}' result.log | xargs -n 1 curl -s -I $1 | head -1 | awk '{print $2}' 
      >>

      > Если в скрипте 2 и более раз используется одна и та же
      > утиль, то это ошибка.

      Это чушь.  У двух авков тут (ты же про них?) совершенно разная область действия.

      Вот head можно довольно легко в соседний awk "внести".

      В принципе, можно и xarg внести, но тогда пидётся очень вдумчиво понисмать, чего пишешь, возможно, получится GNU awk специфично, и, в конце концов _придётся :) объединить 2 awk-а.

      • Вопросы по работе xargs, !*! pavlinux, 19:55 , 10-Янв-14 (9)
        >>>
        awk -F"/" '{print $6;}' result.log | xargs -n 1 curl -s -I $1 | head -1 | awk '{print $2}' 
        >>>

        >> Если в скрипте 2 и более раз используется одна и та же
        >> утиль, то это ошибка.
        > Это чушь.  У двух авков тут (ты же про них?) совершенно
        > разная область действия.

        Делешь афк основной программой, остальные как его аргументы.

        Выше схема:  AWK( HEAD( CURL( AWK() )));  
        переделывается в AWK( HEAD( CURL()), AWK()),
        что есть две функции AWK( HEAD( CURL()), AWK()) + AWK(AWK())
        и как ты написал - AWK(AWK()) самопоглощается,
        и получим:  
                    AWK( HEAD( CURL()), var); , где var - какая-то вспомог. переменная (скорее всего глобальная)

        Теперь самый гиморp - представить это в виде кода  :D




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

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