The OpenNET Project / Index page

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

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

"Вопросы по работе xargs"  +/
Сообщение от universite email(ok) on 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 , а остальные два десятка элементов игнорируются.

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

Оглавление

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


1. "Вопросы по работе xargs"  +/
Сообщение от universite email(ok) on 10-Янв-14, 16:29 

> 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

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

7. "Вопросы по работе xargs"  +/
Сообщение от Andrey Mitrofanov on 10-Янв-14, 19:00 
>> 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}'

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

8. "Вопросы по работе xargs"  +/
Сообщение от Andrey Mitrofanov on 10-Янв-14, 19:12 
> .....
> На сладкое:
> <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}'

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

16. "Вопросы по работе xargs"  +/
Сообщение от universite email(ok) on 11-Янв-14, 14:32 
>> .....
>> На сладкое:
>> <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

}'  --> }}'

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

2. "Вопросы по работе xargs"  +/
Сообщение от pavlinux (ok) on 10-Янв-14, 17:36 
>
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
...
как-то так

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

3. "Вопросы по работе xargs"  +/
Сообщение от universite email(ok) on 10-Янв-14, 18:01 
>> Получаем ответ только первого элемента списка  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

Возможно при обработке гигабайтных файлов будут отличия...
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

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

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

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

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

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

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


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

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

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

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

6. "Вопросы по работе xargs"  +/
Сообщение от Andrey Mitrofanov on 10-Янв-14, 18:36 
>>
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-а.

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

9. "Вопросы по работе xargs"  +/
Сообщение от pavlinux (ok) on 10-Янв-14, 19:55 
>>>
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

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

10. "Вопросы по работе xargs"  +/
Сообщение от universite email(ok) on 10-Янв-14, 20:26 
>>>>
awk -F"/" '{print $6;}' result.log | xargs -n 1 curl -s -I $1 | head -1 | awk '{print $2}' 
>>>>

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

А по первому вопросу есть мысли?

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

11. "Вопросы по работе xargs"  +/
Сообщение от Andrey Mitrofanov on 10-Янв-14, 20:33 
>> Делешь афк основной программой, остальные как его аргументы.

Павлин, глаза выше!

> А по первому вопросу есть мысли?

|xargs -I{} -n1 mv {} {}-OFF

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

13. "Вопросы по работе xargs"  +/
Сообщение от universite email(ok) on 10-Янв-14, 21:44 

>> А по первому вопросу есть мысли?
> |xargs -I{} -n1 mv {} {}-OFF

Работает!

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

14. "Вопросы по работе xargs"  +/
Сообщение от pavlinux (ok) on 10-Янв-14, 21:51 
>>> Делешь афк основной программой, остальные как его аргументы.
> Павлин, глаза выше!

Ну не заметил...

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

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

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




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

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