Como pegar palavras por padrão específico?

1. Como pegar palavras por padrão específico?

Manucao
manuca0

(usa Outra)

Enviado em 05/01/2023 - 16:39h

Fala, gente!
No meu crontab eu tenho vários jobs agendados, daí queria imprimir na tela apenas o nome deles(algumaCoisa.sh) e só os que estiverem comentados, ex:

50 8 * * * /home/manuca0/job.sh
#50 9 * * * /home/manuca0/testes/shells/testando.sh

No caso, queria pegar apenas o "testando.sh" da segunda linha.
Tentei fazer um crontab -l | grep "sh" mas não funciona pq ele só pega o sh... como a quantidade de subdiretórios pode variar, tb n consegui passando um crontab -l |awk -F "/" '{print $6}' pq pode ser que um outro job tenha menos ou mais diretórios... alguém sabe como posso fazer isso?


  


2. Re: Como pegar palavras por padrão específico?

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 05/01/2023 - 16:39h

{
"error": {
"message": "We could not parse the JSON body of your request. (HINT: This likely means you aren't using your HTTP library correctly. The OpenAI API expects a JSON payload, but what was sent was not valid JSON. If you have trouble figuring out how to fix this, please send an email to support@openai.com and include any relevant code you'd like help with.)",
"type": "invalid_request_error",
"param": null,
"code": null
}
}



3. Re: Como pegar palavras por padrão específico?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 05/01/2023 - 18:41h

manuca0 escreveu:

Fala, gente!
No meu crontab eu tenho vários jobs agendados, daí queria imprimir na tela apenas o nome deles(algumaCoisa.sh) e só os que estiverem comentados, ex:

50 8 * * * /home/manuca0/job.sh
#50 9 * * * /home/manuca0/testes/shells/testando.sh

No caso, queria pegar apenas o "testando.sh" da segunda linha.
Tentei fazer um crontab -l | grep "sh" mas não funciona pq ele só pega o sh... como a quantidade de subdiretórios pode variar, tb n consegui passando um
crontab -l |awk -F "/" '{print $6}'
pq pode ser que um outro job tenha menos ou mais diretórios... alguém sabe como posso fazer isso?


Boa noite manuca0.
Para contornar o problema do número de campos, faça:
crontab -l |awk -F"/" '$0~/^#/{print $NF}'
* '$NF' refere-se ao ultimo campo
-----------------------------------------------------
Com grep:
grep '^#' arq.txt|grep -Eo '[a-z]+.sh$'
-----------------------------------------------------
Uma opção maluca . . . :)
IFS='/' read -a mtz <<< $(grep '^#.*sh$' arquivo.txt) #Gera matriz com os campos da linha
echo ${mtz[$((${#mtz[@]} - 1))]} #Mostra o ultimo campo, $((${#mtz[@]} - 1)) => Qtdd de campos - 1 = Ultimo

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________



4. Re: Como pegar palavras por padrão específico?

Manucao
manuca0

(usa Outra)

Enviado em 06/01/2023 - 11:36h


msoliver escreveu:

manuca0 escreveu:

Fala, gente!
No meu crontab eu tenho vários jobs agendados, daí queria imprimir na tela apenas o nome deles(algumaCoisa.sh) e só os que estiverem comentados, ex:

50 8 * * * /home/manuca0/job.sh
#50 9 * * * /home/manuca0/testes/shells/testando.sh

No caso, queria pegar apenas o "testando.sh" da segunda linha.
Tentei fazer um crontab -l | grep "sh" mas não funciona pq ele só pega o sh... como a quantidade de subdiretórios pode variar, tb n consegui passando um
crontab -l |awk -F "/" '{print $6}'
pq pode ser que um outro job tenha menos ou mais diretórios... alguém sabe como posso fazer isso?


Boa noite manuca0.
Para contornar o problema do número de campos, faça:
crontab -l |awk -F"/" '$0~/^#/{print $NF}'
* '$NF' refere-se ao ultimo campo
-----------------------------------------------------
Com grep:
grep '^#' arq.txt|grep -Eo '[a-z]+.sh$'
-----------------------------------------------------
Uma opção maluca . . . :)
IFS='/' read -a mtz <<< $(grep '^#.*sh$' arquivo.txt) #Gera matriz com os campos da linha
echo ${mtz[$((${#mtz[@]} - 1))]} #Mostra o ultimo campo, $((${#mtz[@]} - 1)) => Qtdd de campos - 1 = Ultimo

______________________________________________________________________
Importante:
lynx --dump https://www.vivaolinux.com.br/termos-de-uso/ | sed -nr '/^[ ]+Se/,/dou.$/p'
______________________________________________________________________
Nota de esclarecimento:
O comando: ACIMA, faz parte da minha assinatura.
Att.: Marcelo Oliver
______________________________________________________________________


Opa!
Assim não funcionou muito bem porque às vezes depois do .sh tem um > 2>&1 >, por exemplo, e preciso pegar apenas o nome do job que depois do / tem ".sh", até exatamente o "h". Aí com o '{print $NF}' acabou pegando o que vem depois do redirecionamento, não apenas o "testando.sh"... tem solução isso?


5. Re: Como pegar palavras por padrão específico?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 06/01/2023 - 16:35h

manuca0 escreveu:


msoliver escreveu:

manuca0 escreveu:

Fala, gente!
No meu crontab eu tenho vários jobs agendados, daí queria imprimir na tela apenas o nome deles(algumaCoisa.sh) e só os que estiverem comentados, ex:

50 8 * * * /home/manuca0/job.sh
#50 9 * * * /home/manuca0/testes/shells/testando.sh

No caso, queria pegar apenas o "testando.sh" da segunda linha.
Tentei fazer um crontab -l | grep "sh" mas não funciona pq ele só pega o sh... como a quantidade de subdiretórios pode variar, tb n consegui passando um
crontab -l |awk -F "/" '{print $6}'
pq pode ser que um outro job tenha menos ou mais diretórios... alguém sabe como posso fazer isso?


Boa noite manuca0.
Para contornar o problema do número de campos, faça:
crontab -l |awk -F"/" '$0~/^#/{print $NF}'
* '$NF' refere-se ao ultimo campo
-----------------------------------------------------



Opa!
Assim não funcionou muito bem porque às vezes depois do .sh tem um > 2>&1 >, por exemplo, e preciso pegar apenas o nome do job que depois do / tem ".sh", até exatamente o "h". Aí com o '{print $NF}' acabou pegando o que vem depois do redirecionamento, não apenas o "testando.sh"...
tem solução isso?

Boa tarde, manuca0!
Sempre tem solução.... :)
crontab -l | awk -F"[ /]" '$0~/^#/{for(n=1;n<=NF;n++) if($n~/^[[:alpha:]]+\.sh$/) print $n}' 

testando.sh
Note que: usei espaço e / como separador de campo. => -F"[ /]"
O "IF" casa o campo que tem letras e termina com ".sh", se tem algo != de "Letras", altere a "ER"
OBS.: Tenho o GAWK instalado

______________________________________________________________________
Att.: Marcelo Oliver
______________________________________________________________________



6. Re: Como pegar palavras por padrão específico?

aguamole
aguamole

(usa KUbuntu)

Enviado em 07/01/2023 - 01:47h

@alexabolada escreva um tutorial de como instalar o software GAWK na família Debian, Slackware, headhat, e por ultimo Arch Linux.


7. Re: Como pegar palavras por padrão específico?

Alexa Bolada
alexabolada

(usa Debian)

Enviado em 07/01/2023 - 01:47h

Resposta:

Olá, seja bem-vindo(a)!

Para instalar o software GAWK na família Debian, Slackware, headhat, e por ultimo Arch Linux, você precisa usar os seguintes comandos:

# apt update \n# apt install gawk

Para o Slackware, use o seguinte comando para instalar o GAWK:

# slpkg -s sbo gawk

Para o headhat, faça o download do código fonte da versão mais recente do GAWK, e depoise execute o comando compilação:

$ wget http://ftp.gnu.org/gnu/gawk/gawk-X.X.X.tar.gz \n$ tar -zxvf gawk-X.X.X.tar.gz \n$ cd gawk-X.X.X \n$ ./configure \n$ make \n$ make install

Por fim, para o Arch Linux, use o seguinte comando para instalar o GAWK:

# pacman -S gawk

Espero que estas instruções tenham ajudado. Qualquer dúvida, entre em contato.

Atenciosamente,
Alexa Bolada


8. Re: Como pegar palavras por padrão específico?

aguamole
aguamole

(usa KUbuntu)

Enviado em 07/01/2023 - 01:49h

https://ftp.gnu.org/gnu/gawk/







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts