Необходимо в логах приложения собрать статистику за 5-7 дней логи на линукс тачке в /var/log/partner/xxxxx.log
Найти все вызовы transparent например
/partner/transparent?service_id=15&partner_id=666&amount=400 )
Вытащить из них partner_id
Нужен список уникальных партнер id или service_id (если нет партнер)
правильно ли я понимаю вашу логику, вам нужно не просто grep по шаблонам но и условие которое позволит в строке оставлять одно из значений ?
если нет то дайте реальный пример было стало. а так же важен формат вывода в строку не в строку два аргумента 1 и тд какие вармианты урлов бывают
dimjkee90, это я прочитал, в файл как складывать пробел запятая, новая строка, а если их двое то показывать оба?
а есил нет то писать название преед цифрой или две цифры а если две то через какой знак ?
блин так сложно показать конечный вывод?
а формат даты во входном файле, кэп ну вот как тебе помочь ?
в общем есть гет запрос
11.11.11.11 [17/Nov/2020:15:56:06 +0300] "GET /partner/transparent?partner_id=1198&service_id=19217& нужно сделать вывод в файл, в столбик, в логе может быть много запросов с partner_id=1198 нужно в файл вывести только уникальные без повторов, если в запросе нету partner_id= то в этот же файл записать service_id
partner_id=XXXX
partner_id=XXXX
partner_id=XXXX
service_id=XXXX
dimjkee90,
для этого вам подойдет awk
в нем есть конструкции типа иф эльс
создаете логику типа
если есть *service_id=[0-9]+" то $3=$1 иначе $3=$2 (двойка все что в partner_id=) и принтуем $3
вот от чего можно начать
cat /tmp/111.txt | grep /partner/transparent |awk '{if($1 ~ ".*service_id=.*") $1="true"; print $1}'
пример конечно можно
Базовый такой
cat /var/log/ваш-логфайл | grep transparent | awk -F'[=&]' '{print $4}'
Как прокрутить все файлы в каталоге (find) тут отвечали люди многократно, как определить есть или нет partner_id или нет - например через if.
А можно и не в одну строку это обрабатывать, а скрипт написать и там полноценную логику if чтото ; then сделать это, ifelse чтото другое, бла бла.
По моему все достаточно очевидно