Enviado em 10/07/2023 - 07:37h
Olá, pessoal, não sou um profundo conhecedor de Linux e montagem de scripts, porém tenho uma breve familiaridade com o assunto e acredito que posso ir me virando com uma boa dose de ajuda,
de antemão já agradeço a ajuda de todos... Muito obrigado!
Bom... vamos lá
Estou montando um script onde monitoro algumas notificações recebidas via telegram,
essas notificações são redirecionadas para uma arquivo chamado input.txt e o script é alimentado justamente por esse arquivo.
Exemplo do contéudo inserido no input.txt:
Exemplo de saída após o input.txt ser filtrado via script:
A função do script é ir fazendo a soma de forma incremental do item "change:"
Até esse ponto está tudo ok e o script tem funcionado, porém tenho dois problemas e preciso implementar duas condições para que isso seja solucionado.
1- O percentual precisa ser calculado de forma incremental/crescente, dentro de uma janela de 0 até no máximo 30 minutos entre uma notificação e outra, a partir do minuto 31,
o cálculo incremental do percentual precisa ser zerado/reiniciado, iniciando um novo ciclo de cálculo.
2- Preciso de uma condição onde o valor contido no item "Price:" na notificação atual não seja menor que o valor da notificação anterior, exemplo:
Notificação atual:
Price: 0.006825
Notificação anterior:
Price: 0.007453
Caso ocorra qualquer um dos 2 cenários, o ciclo precisa ser automaticamente reiniciado e a soma das porcentagens zeradas.
Alguma ideia como posso resolver esse pequeno problema em meu script?
Estou montando os 2 scripts abaixo e ambos fazem a mesma coisa, caso consiga ajustar qualquer um dos scripts com as duas condições mencionadas, acredito que boa parte
do meu problema será solucionado.
Script em perl:
Executo da seguinte forma:
perl -lp ./perl.pl input.txt
Script com awk:
./awh.sh
de antemão já agradeço a ajuda de todos... Muito obrigado!
Bom... vamos lá
Estou montando um script onde monitoro algumas notificações recebidas via telegram,
essas notificações são redirecionadas para uma arquivo chamado input.txt e o script é alimentado justamente por esse arquivo.
Exemplo do contéudo inserido no input.txt:
#Price_Notification_ProductABC
Price: 0.006813
change: +1.6%
Count Number: 1
#Price_Notification_ProductABC
Price: 0.006969
change: +2.3%
Count Number: 2
#Price_Notification_ProductABC
Price: 0.007060
change: +1.3%
Count Number: 3
#Price_Notification_ProductABC
Price: 0.007300
change: +3.4%
Count Number: 4
#Price_Notification_ProductABC
Price: 0.007453
change: +2.1%
Count Number: 5
Exemplo de saída após o input.txt ser filtrado via script:
#Price_Notification_ProductABC
Price: 0.006813
change: +1.6%
Count Number: 1
#Price_Notification_ProductABC
Price: 0.006969
change: +3.9%
Count Number: 2
#Price_Notification_ProductABC
Price: 0.007060
change: +5.2%
Count Number: 3
#Price_Notification_ProductABC
Price: 0.007300
change: +8.6%
Count Number: 4
#Price_Notification_ProductABC
Price: 0.007453
change: +10.7%
Count Number: 5
A função do script é ir fazendo a soma de forma incremental do item "change:"
Até esse ponto está tudo ok e o script tem funcionado, porém tenho dois problemas e preciso implementar duas condições para que isso seja solucionado.
1- O percentual precisa ser calculado de forma incremental/crescente, dentro de uma janela de 0 até no máximo 30 minutos entre uma notificação e outra, a partir do minuto 31,
o cálculo incremental do percentual precisa ser zerado/reiniciado, iniciando um novo ciclo de cálculo.
2- Preciso de uma condição onde o valor contido no item "Price:" na notificação atual não seja menor que o valor da notificação anterior, exemplo:
Notificação atual:
Price: 0.006825
Notificação anterior:
Price: 0.007453
Caso ocorra qualquer um dos 2 cenários, o ciclo precisa ser automaticamente reiniciado e a soma das porcentagens zeradas.
Alguma ideia como posso resolver esse pequeno problema em meu script?
Estou montando os 2 scripts abaixo e ambos fazem a mesma coisa, caso consiga ajustar qualquer um dos scripts com as duas condições mencionadas, acredito que boa parte
do meu problema será solucionado.
Script em perl:
Executo da seguinte forma:
perl -lp ./perl.pl input.txt
#!/usr/bin/perl -lp
if (/^#Price_Notification_Product/) {
$prod = $_;
} elsif (/^change: ([^%]*)%/) {
$products{$prod} += $1;
$_ = "change: +$products{$prod}%";
Script com awk:
./awh.sh
#!/bin/bash
awk '
/^#Price_Notification_Product/ {
prod = $0;
}
/^change: / {
gsub(/[+%]/,"",$2);
products[prod] += $2;
$2 = "+" products[prod] "%"
}
1' input.txt