Как сделать что-то подобное?

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
levantuev
сержант
Сообщения: 168
Зарегистрирован: 2008-11-05 6:15:43
Контактная информация:

Как сделать что-то подобное?

Непрочитанное сообщение levantuev » 2010-04-22 5:40:35

Как сделать что бы две команды выводили в одну строку результат?

Код: Выделить всё

cat files.log | grep BlackList | awk '{print $1}'
cat files.log | grep Showuser| awk '{print $5}'

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: Как сделать что-то подобное?

Непрочитанное сообщение Shuba » 2010-04-22 9:49:30

levantuev писал(а):Как сделать что бы две команды выводили в одну строку результат?

Код: Выделить всё

cat files.log | grep BlackList | awk '{print $1}'
cat files.log | grep Showuser| awk '{print $5}'

Код: Выделить всё

echo `cat files.log | grep BlackList | awk '{print $1}'` `cat files.log | grep Showuser| awk '{print $5}'`
Сила ночи, сила дня - одинакова фигня!

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Как сделать что-то подобное?

Непрочитанное сообщение hizel » 2010-04-22 9:58:16

Код: Выделить всё

cat files.log | egrep (BlackList|Showuser) | awk бла бла
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

levantuev
сержант
Сообщения: 168
Зарегистрирован: 2008-11-05 6:15:43
Контактная информация:

Re: Как сделать что-то подобное?

Непрочитанное сообщение levantuev » 2010-04-22 10:47:35

hizel писал(а):

Код: Выделить всё

cat files.log | egrep (BlackList|Showuser) | awk бла бла
Неверно указанные ().

Аватара пользователя
hizel
дядя поня
Сообщения: 9032
Зарегистрирован: 2007-06-29 10:05:02
Откуда: Выборг

Re: Как сделать что-то подобное?

Непрочитанное сообщение hizel » 2010-04-22 10:50:36

ну в ковычки сунуть :-\
В дурацкие игры он не играет. Он просто жуткий, чу-чу, паровозик, и зовут его Блейн. Блейн --- это Боль.

levantuev
сержант
Сообщения: 168
Зарегистрирован: 2008-11-05 6:15:43
Контактная информация:

Re: Как сделать что-то подобное?

Непрочитанное сообщение levantuev » 2010-04-22 10:58:58

Сунул, в итоге вышло так:

Код: Выделить всё

22.04.2010 16:57:45 INFO     [CheckBlackList]   ANI '00:25:22:07:F6:D5' (User 'z101279') is clean
22.04.2010 16:57:45 INFO     [ProcessAuthRequests]      Access-Accept
22.04.2010 16:58:26 INFO     [CheckBlackList]   ANI '00:0F:EA:78:EF:DF' (User 'z000380') is clean
22.04.2010 16:58:26 INFO     [ProcessAuthRequests]      Blocked
а нужно сделать типа так:

Код: Выделить всё

22.04.2010 16:58:26 INFO ANI '00:25:22:07:F6:D5' (User 'z101279') is clean Access-Accept
22.04.2010 16:58:26 INFO ANI '00:0F:EA:78:EF:DF' (User 'z000380') is clean Blocked
т.е две строки объединить и у второй строки взять только Blocked или Access-Accept

levantuev
сержант
Сообщения: 168
Зарегистрирован: 2008-11-05 6:15:43
Контактная информация:

Re: Как сделать что-то подобное?

Непрочитанное сообщение levantuev » 2010-04-22 11:03:21

Код: Выделить всё

echo `cat files.log | grep BlackList | awk '{print $1}'` `cat files.log | grep Showuser| awk '{print $5}'`
а этот вариант пишет все в одну строку

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: Как сделать что-то подобное?

Непрочитанное сообщение Shuba » 2010-04-22 12:31:28

levantuev писал(а):

Код: Выделить всё

echo `cat files.log | grep BlackList | awk '{print $1}'` `cat files.log | grep Showuser| awk '{print $5}'`
а этот вариант пишет все в одну строку
С тебя бутылка виртуального пива ;-)
Сила ночи, сила дня - одинакова фигня!

levantuev
сержант
Сообщения: 168
Зарегистрирован: 2008-11-05 6:15:43
Контактная информация:

Re: Как сделать что-то подобное?

Непрочитанное сообщение levantuev » 2010-04-22 12:47:37

Пиво, не вопрос, тока помогите сделать :)

Аватара пользователя
Shuba
ст. сержант
Сообщения: 365
Зарегистрирован: 2008-03-25 10:58:21
Откуда: Минск
Контактная информация:

Re: Как сделать что-то подобное?

Непрочитанное сообщение Shuba » 2010-04-22 14:00:17

Э... моя твоя не понимай. Так пишет мой вариант всё в одну строку...
Сила ночи, сила дня - одинакова фигня!

Гость
проходил мимо

Re: Как сделать что-то подобное?

Непрочитанное сообщение Гость » 2010-04-22 16:11:43

телепатический парсер сломался, но может что-то вроде

Код: Выделить всё

$ cat files.log | awk '/BlackList/ { print $1 } /Showuser/ { print $5 }'
откуда cat(1) можно выкинуть

Аватара пользователя
terminus
майор
Сообщения: 2305
Зарегистрирован: 2007-10-29 11:27:35
Откуда: Рига

Re: Как сделать что-то подобное?

Непрочитанное сообщение terminus » 2010-04-22 16:50:34

levantuev писал(а):Как сделать что бы две команды выводили в одну строку результат?

Код: Выделить всё

cat files.log | grep BlackList | awk '{print $1}'
cat files.log | grep Showuser| awk '{print $5}'
http://www.freebsd.org/cgi/man.cgi?quer ... ormat=html

Код: Выделить всё

cat files.log | grep BlackList | awk '{print $1}' > ./file1
cat files.log | grep Showuser| awk '{print $5}' > ./file2
paste ./file1 ./file2
Модель: AST-PM-105/0044; Тип: Универсальный, ремонтный; Название: Терминус; Род повреждения: Распад функций; Выводы: Сдать на слом.

x6e6564
проходил мимо

Re: Как сделать что-то подобное?

Непрочитанное сообщение x6e6564 » 2010-04-24 4:18:35

если кол-во "столбцов" фиксировано, то обработать доп. | xargs -n 10

Код: Выделить всё

cat /tmp/test
22.04.2010 16:57:45 INFO     [CheckBlackList]   ANI '00:25:22:07:F6:D5' (User 'z101279') is clean
22.04.2010 16:57:45 INFO     [ProcessAuthRequests]      Access-Accept
22.04.2010 16:58:26 INFO     [CheckBlackList]   ANI '00:0F:EA:78:EF:DF' (User 'z000380') is clean
22.04.2010 16:58:26 INFO     [ProcessAuthRequests]      Blocked

cat /tmp/test | xargs -n 15
22.04.2010 16:57:45 INFO [CheckBlackList] ANI 00:25:22:07:F6:D5 (User z101279) is clean 22.04.2010 16:57:45 INFO [ProcessAuthRequests] Access-Accept
22.04.2010 16:58:26 INFO [CheckBlackList] ANI 00:0F:EA:78:EF:DF (User z000380) is clean 22.04.2010 16:58:26 INFO [ProcessAuthRequests] Blocked

levantuev
сержант
Сообщения: 168
Зарегистрирован: 2008-11-05 6:15:43
Контактная информация:

Re: Как сделать что-то подобное?

Непрочитанное сообщение levantuev » 2010-04-24 12:39:04

x6e6564 писал(а):если кол-во "столбцов" фиксировано, то обработать доп. | xargs -n 10

Код: Выделить всё

cat /tmp/test
22.04.2010 16:57:45 INFO     [CheckBlackList]   ANI '00:25:22:07:F6:D5' (User 'z101279') is clean
22.04.2010 16:57:45 INFO     [ProcessAuthRequests]      Access-Accept
22.04.2010 16:58:26 INFO     [CheckBlackList]   ANI '00:0F:EA:78:EF:DF' (User 'z000380') is clean
22.04.2010 16:58:26 INFO     [ProcessAuthRequests]      Blocked

cat /tmp/test | xargs -n 15
22.04.2010 16:57:45 INFO [CheckBlackList] ANI 00:25:22:07:F6:D5 (User z101279) is clean 22.04.2010 16:57:45 INFO [ProcessAuthRequests] Access-Accept
22.04.2010 16:58:26 INFO [CheckBlackList] ANI 00:0F:EA:78:EF:DF (User z000380) is clean 22.04.2010 16:58:26 INFO [ProcessAuthRequests] Blocked
ваш вариант идеален, вот то что нужно было сделать!!! Но к сожалению лог немножко другой структуры:

Код: Выделить всё

24.04.2010 14:18:04 INFO     [CheckBlackList]   ANI '00:24:81:44:B6:92' (User 'z100185') is clean
24.04.2010 14:18:04 INFO     [AuthenticateFromDatabase] User: 'z100185', bill by traffic, unlimited session timeout (86400)
24.04.2010 14:18:04 INFO     [GetClientIPAndNetMask]    Client IP/Netmask: 95.167.81.158/255.255.255.255
24.04.2010 14:18:04 INFO     [ProcessAuthRequests]      Access-Accept
24.04.2010 14:18:07 INFO     [CheckBlackList]   ANI '00:24:81:44:B6:92' (User 'z100185') is clean
24.04.2010 14:18:07 INFO     [AuthenticateFromDatabase] User: 'z100185', bill by traffic, unlimited session timeout (86400)
24.04.2010 14:18:07 INFO     [GetClientIPAndNetMask]    Client IP/Netmask: 95.167.81.159/255.255.255.255
24.04.2010 14:18:07 INFO     [ProcessAuthRequests]      Access-Accept
24.04.2010 14:18:09 INFO     [CheckBlackList]   ANI '00:11:09:9D:6B:47' (User 'z100827') is clean
24.04.2010 14:18:09 INFO     [AuthenticateFromDatabase] User: 'z100827', bill by traffic, unlimited session timeout (86400)
24.04.2010 14:18:09 INFO     [GetClientIPAndNetMask]    Client IP/Netmask: 95.167.81.160/255.255.255.255
24.04.2010 14:18:09 INFO     [ProcessAuthRequests]      Access-Accept
24.04.2010 14:18:27 INFO     [CheckBlackList]   ANI '00:22:68:6A:27:B6' (User 'z100840') is clean
24.04.2010 14:18:27 INFO     [AuthenticateFromDatabase] User: 'z100840', bill by traffic, unlimited session timeout (86400)
24.04.2010 14:18:27 INFO     [GetClientIPAndNetMask]    Client IP/Netmask: 95.167.81.161/255.255.255.255
24.04.2010 14:18:27 INFO     [ProcessAuthRequests]      Access-Accept
Пожалуйста помогите сделать что бы был такой же результат, только из вышеуказанного лога

x6e6564
проходил мимо

Re: Как сделать что-то подобное?

Непрочитанное сообщение x6e6564 » 2010-04-27 7:14:08

Последнее и начальное не совпадают (нету Showuser).
Как сделать что бы две команды выводили в одну строку результат?

Код: Выделить всё • Развернуть
cat files.log | grep BlackList | awk '{print $1}'
cat files.log | grep Showuser| awk '{print $5}'
Проще было выложить кусок лога и нужный вид.

А так по нижеслед.

Код: Выделить всё

grep -E "BlackList|ProcessAuthRequests" /tmp/test | xargs -n 15