Como verificar arquivo .conf com varios ambientes e suas diretivas?

1. Como verificar arquivo .conf com varios ambientes e suas diretivas?

Ghoost User
ghoostuser

(usa Arch Linux)

Enviado em 06/09/2018 - 21:59h

Galera, seguinte. Tenho o seguinte arquivo "config.conf":



[stage]
user: ghoost
url: www.example.com

[production]
user: ghostinho
url: www.example2.com



Quero fazer em shellscript a saida das diretivas de acordo com o comando usado, por exemplo:


$ ./script env stage


user: ghoost
url: www.example.com


Entenderam? Tem que ser com essa configuração, não pode mudar. É para uma tarefa.




  


2. Re: Como verificar arquivo .conf com varios ambientes e suas diretivas?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 08/09/2018 - 19:51h

ghoostuser escreveu:

Galera, seguinte. Tenho o seguinte arquivo "config.conf":



[stage]
user: ghoost
url: www.example.com

[production]
user: ghostinho
url: www.example2.com

Quero fazer em shellscript a saida das diretivas de acordo com o comando usado, por exemplo:

$ ./script env stage

user: ghoost
url: www.example.com
Entenderam?
Tem que ser com essa configuração, não pode mudar. É para uma tarefa.

Boa noite GoostUser.
Segue sugestão:
#!/bin/bash
alvo="config.conf"
ParamValido=$(sed -n '/\[.*\]/p' $alvo |sed 's/\[\|\]//g'|tr "\n" "|")
if [ $2 ] && [[ $2 =~ ^(${ParamValido})$ ]];then
var="$2"
awk 'BEGIN{FS="\n";RS="\n\n"} $1 ~ /'$var'/ {OFS="\n";print $2,$3}' $alvo
else
echo -e "\nParametro Inválido"
fi


att.:
marcelo oliver



3. Re: Como verificar arquivo .conf com varios ambientes e suas diretivas?

Ghoost User
ghoostuser

(usa Arch Linux)

Enviado em 11/09/2018 - 11:08h

msoliver escreveu:

ghoostuser escreveu:

Galera, seguinte. Tenho o seguinte arquivo "config.conf":



[stage]
user: ghoost
url: www.example.com

[production]
user: ghostinho
url: www.example2.com

Quero fazer em shellscript a saida das diretivas de acordo com o comando usado, por exemplo:

$ ./script env stage

user: ghoost
url: www.example.com
Entenderam?
Tem que ser com essa configuração, não pode mudar. É para uma tarefa.

Boa noite GoostUser.
Segue sugestão:
#!/bin/bash
alvo="config.conf"
ParamValido=$(sed -n '/\[.*\]/p' $alvo |sed 's/\[\|\]//g'|tr "\n" "|")
if [ $2 ] && [[ $2 =~ ^(${ParamValido})$ ]];then
var="$2"
awk 'BEGIN{FS="\n";RS="\n\n"} $1 ~ /'$var'/ {OFS="\n";print $2,$3}' $alvo
else
echo -e "\nParametro Inválido"
fi


att.:
marcelo oliver


Bom dia Marcelo!

Funcionou, só que se tiver mais valores na chave, eles não são mostrado, só mostra url e user. :/


4. Re: Como verificar arquivo .conf com varios ambientes e suas diretivas?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 11/09/2018 - 20:50h

ghoostuser escreveu:

msoliver escreveu:

ghoostuser escreveu:

Galera, seguinte. Tenho o seguinte arquivo "config.conf":



[stage]
user: ghoost
url: www.example.com

[production]
user: ghostinho
url: www.example2.com

Quero fazer em shellscript a saida das diretivas de acordo com o comando usado, por exemplo:

$ ./script env stage

user: ghoost
url: www.example.com
Entenderam?
Tem que ser com essa configuração, não pode mudar. É para uma tarefa.

Boa noite GoostUser.
Segue sugestão:
#!/bin/bash
alvo="config.conf"
ParamValido=$(sed -n '/\[.*\]/p' $alvo |sed 's/\[\|\]//g'|tr "\n" "|")
if [ $2 ] && [[ $2 =~ ^(${ParamValido})$ ]];then
var="$2"
awk 'BEGIN{FS="\n";RS="\n\n"} $1 ~ /'$var'/ {OFS="\n";print $2,$3}' $alvo
else
echo -e "\nParametro Inválido"
fi


att.:
marcelo oliver


Bom dia Marcelo!

Funcionou, só que se tiver mais valores na chave, eles não são mostrado, só mostra url e user. :/

Boa noite.
Sim, com base no seu exemplo, fiz para mostrar o campo 2 e o 3....
Isso é simples de resolver,,,,
Como a quantidade de campos é variável em cada registro,
No awk, com base no nº de campos (NF), faça um laço para pegar todos campos, exceto o primeiro.

att.:
Marcelo oliver



5. Re: Como verificar arquivo .conf com varios ambientes e suas diretivas?

Ghoost User
ghoostuser

(usa Arch Linux)

Enviado em 11/09/2018 - 21:47h

msoliver escreveu:

ghoostuser escreveu:

msoliver escreveu:

ghoostuser escreveu:

Galera, seguinte. Tenho o seguinte arquivo "config.conf":



[stage]
user: ghoost
url: www.example.com

[production]
user: ghostinho
url: www.example2.com

Quero fazer em shellscript a saida das diretivas de acordo com o comando usado, por exemplo:

$ ./script env stage

user: ghoost
url: www.example.com
Entenderam?
Tem que ser com essa configuração, não pode mudar. É para uma tarefa.

Boa noite GoostUser.
Segue sugestão:
#!/bin/bash
alvo="config.conf"
ParamValido=$(sed -n '/\[.*\]/p' $alvo |sed 's/\[\|\]//g'|tr "\n" "|")
if [ $2 ] && [[ $2 =~ ^(${ParamValido})$ ]];then
var="$2"
awk 'BEGIN{FS="\n";RS="\n\n"} $1 ~ /'$var'/ {OFS="\n";print $2,$3}' $alvo
else
echo -e "\nParametro Inválido"
fi


att.:
marcelo oliver


Bom dia Marcelo!

Funcionou, só que se tiver mais valores na chave, eles não são mostrado, só mostra url e user. :/

Boa noite.
Sim, com base no seu exemplo, fiz para mostrar o campo 2 e o 3....
Isso é simples de resolver,,,,
Como a quantidade de campos é variável em cada registro,
No awk, com base no nº de campos (NF), faça um laço para pegar todos campos, exceto o primeiro.

att.:
Marcelo oliver


Acho que consegui, só removi a parte {OFS="\n";print $2,$3} e listou todo campo.


6. Re: Como verificar arquivo .conf com varios ambientes e suas diretivas?

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/09/2018 - 11:46h

ghoostuser escreveu:

msoliver escreveu:

ghoostuser escreveu:

msoliver escreveu:

ghoostuser escreveu:

Galera, seguinte. Tenho o seguinte arquivo "config.conf":



[stage]
user: ghoost
url: www.example.com

[production]
user: ghostinho
url: www.example2.com

Quero fazer em shellscript a saida das diretivas de acordo com o comando usado, por exemplo:

$ ./script env stage

user: ghoost
url: www.example.com
Entenderam?
Tem que ser com essa configuração, não pode mudar. É para uma tarefa.

Boa noite GoostUser.
Segue sugestão:
#!/bin/bash
alvo="config.conf"
ParamValido=$(sed -n '/\[.*\]/p' $alvo |sed 's/\[\|\]//g'|tr "\n" "|")
if [ $2 ] && [[ $2 =~ ^(${ParamValido})$ ]];then
var="$2"
awk 'BEGIN{FS="\n";RS="\n\n"} $1 ~ /'$var'/ {OFS="\n";print $2,$3}' $alvo
else
echo -e "\nParametro Inválido"
fi


att.:
marcelo oliver


Bom dia Marcelo!

Funcionou, só que se tiver mais valores na chave, eles não são mostrado, só mostra url e user. :/

Boa noite.
Sim, com base no seu exemplo, fiz para mostrar o campo 2 e o 3....
Isso é simples de resolver,,,,
Como a quantidade de campos é variável em cada registro,
No awk, com base no nº de campos (NF), faça um laço para pegar todos campos, exceto o primeiro.

att.:
Marcelo oliver


Acho que consegui, só removi a parte {OFS="\n";print $2,$3} e listou todo campo.


Bom dia.
Outras opções:
awk 'BEGIN{FS="\n";RS="\n\n"} $1 ~ /'$var'/ {print $0}' $alvo 

Ou
awk 'BEGIN{FS="\n";RS="\n\n"} $1 ~ /'$var'/ {for (n=2;n<=NF;++n) print $n}' $alvo 


Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts