AWK

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Agronom
ст. сержант
Сообщения: 305
Зарегистрирован: 2006-12-11 10:30:13

AWK

Непрочитанное сообщение Agronom » 2007-07-25 14:28:05

Сделал вывод поля 5 в файл temp_num из строки содержащей определенное слово (с удалением дубликатов). Потом решил перебирать все строки и выводить только те, у которых значение пятого поля равно тому, которое есть в temp_num:

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

TMP=./temp_num
cat ./log | awk '$0 ~/tester/{print $5}' > ./temp_num
POLE=""
while [ 1 ]
do
read POLE || break
cat ./log | awk '$0 ~/'$POLE'/{print $0}' > ./itog
done < $TMP

Пятое поле попадает в файл temp_num, а itog пустой подскажите, где я ошибся?

Хостинговая компания 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/

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: AWK

Непрочитанное сообщение Alex Keda » 2007-07-25 15:02:35

а ты на кавычки в предпоследней строке внимание обрати...
не нравтся мне они...
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Agronom
ст. сержант
Сообщения: 305
Зарегистрирован: 2006-12-11 10:30:13

Re: AWK

Непрочитанное сообщение Agronom » 2007-07-25 15:34:55

мне нужно поочередно вставлять в проверку строки из подготовленного файла, чтобы : взял "значение" в первой строке, проверил файл и выписал в итоговый файл строки, которые содержат "значение". Алгоритм правильно написан? А с кавычками не пойму что не так :?

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: AWK

Непрочитанное сообщение Alex Keda » 2007-07-25 15:43:20

дай пример tmp_num и пример того что хочешь на выходе
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Agronom
ст. сержант
Сообщения: 305
Зарегистрирован: 2006-12-11 10:30:13

Re: AWK

Непрочитанное сообщение Agronom » 2007-07-25 15:50:42

есть строки лога, в котором мне нужно вырвать все строки с определенными pid. Сначала я ищу юзера/его IP и помещаю первый найденный pid (попадает в файл tmp_num такой строкой - squid[112233]) потом я из лога выбираю все строки с таким pid и помещаю их в itog.
Пример tmp_num:
squid[112233] - (можно было бы всё вырезать кроме самого pid)
squid[112237]
squid[112239]

на выходе хотело бы иметь:

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

Jul 8 14:45:01 proxy squid[112233]: session opened for user test by (uid=10)
Jun  8 16:13:12 proxy squid[112237]: clientReadRequest: FD 543 Invalid Request                                                 
Jun  8 16:13:39 proxy squid[112237]: sslReadServer: FD 655: read failure: (104) Connection reset by peer                       
Jun  8 16:14:15 proxy squid[112237]: parseHttpRequest: Unsupported method '<scheduler_request> '
Jun  8 17:53:47 proxy squid[112239]: urlParse: Illegal character in hostname '%d0%bf%d0%bb%d1%8e%d1%81%202%20%d0%bd%d0%b5%d0%b4
Jun  8 17:53:59 proxy squid[112239]: urlParse: Illegal character in hostname '%d0%bf%d0%bb%d1%8e%d1%81%202%20%d0%bd%d0%b5%d0%b4
Jun  8 17:54:32 proxy squid[112239]: urlParse: Illegal character in hostname '%d0%bf%d0%bb%d1%8e%d1%81%202%20%d0%bd%d0%b5%d0%b4
Jun  8 17:54:45 proxy squid[112239]: urlParse: Illegal character in hostname '%d0%bf%d0%bb%d1%8e%d1%81%202%20%d0%bd%d0%b5%d0%b4
Jun  8 17:55:07 proxy squid[112239]: urlParse: Illegal character in hostname '%d0%bf%d0%bb%d1%8e%d1%81%202%20%d0%bd%d0%b5%d0%b4

Аватара пользователя
Agronom
ст. сержант
Сообщения: 305
Зарегистрирован: 2006-12-11 10:30:13

Re: AWK

Непрочитанное сообщение Agronom » 2007-07-26 10:16:27

Вообщем подсказали как сделать, но из цикла пишутся только строки с последним pid :?

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

touch ./temp_num; #создаем необходимые файлы
touch ./itog;
touch ./tmp;

POLE="";
#вырезаем pid из строк с нужным значением
cat ./squid.log | awk '$0 ~/failure/||/illegal/{print $5}' > ./tmp
uniq -d ./tmp ./temp_num #удаляем дублирующиеся строки
rm ./tmp #удаляем промежуточный файл
# выбираем строки, которые содержат pid из файла temp_num
while [ 1 ]
do
read POLE || break
cat ./squid.log | awk '{if ($5=="'${POLE}'") print $0}' > ./itog
done < ./temp_num

Аватара пользователя
Agronom
ст. сержант
Сообщения: 305
Зарегистрирован: 2006-12-11 10:30:13

Re: AWK

Непрочитанное сообщение Agronom » 2007-07-26 10:36:05

нашел! надо было написать >> а не >

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: AWK

Непрочитанное сообщение Alex Keda » 2007-07-26 11:28:30

мдя... и я не заметил :)
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Agronom
ст. сержант
Сообщения: 305
Зарегистрирован: 2006-12-11 10:30:13

Re: AWK

Непрочитанное сообщение Agronom » 2007-07-26 13:40:40

не знаешь как составить gensub, чтобы в temp_num записывались только цифры. Т.е на squid[112233], а просто 112233?
что-то типа

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

{print gensub(/[0-9]/,"\\0","") }

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35411
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

Re: AWK

Непрочитанное сообщение Alex Keda » 2007-07-26 14:04:17

а я б tr выбрал :)
Убей их всех! Бог потом рассортирует...