Страница 1 из 1
AWK
Добавлено: 2007-07-25 14:28:05
Agronom
Сделал вывод поля 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 пустой подскажите, где я ошибся?
Re: AWK
Добавлено: 2007-07-25 15:02:35
Alex Keda
а ты на кавычки в предпоследней строке внимание обрати...
не нравтся мне они...
Re: AWK
Добавлено: 2007-07-25 15:34:55
Agronom
мне нужно поочередно вставлять в проверку строки из подготовленного файла, чтобы : взял "значение" в первой строке, проверил файл и выписал в итоговый файл строки, которые содержат "значение". Алгоритм правильно написан? А с кавычками не пойму что не так

Re: AWK
Добавлено: 2007-07-25 15:43:20
Alex Keda
дай пример tmp_num и пример того что хочешь на выходе
Re: AWK
Добавлено: 2007-07-25 15:50:42
Agronom
есть строки лога, в котором мне нужно вырвать все строки с определенными 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
Re: AWK
Добавлено: 2007-07-26 10:16:27
Agronom
Вообщем подсказали как сделать, но из цикла пишутся только строки с последним 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
Re: AWK
Добавлено: 2007-07-26 10:36:05
Agronom
нашел! надо было написать >> а не >
Re: AWK
Добавлено: 2007-07-26 11:28:30
Alex Keda
мдя... и я не заметил

Re: AWK
Добавлено: 2007-07-26 13:40:40
Agronom
не знаешь как составить gensub, чтобы в temp_num записывались только цифры. Т.е на squid[112233], а просто 112233?
что-то типа
Re: AWK
Добавлено: 2007-07-26 14:04:17
Alex Keda
а я б tr выбрал
