segunda-feira, 9 de dezembro de 2019

Trabalhando com array, no shell script.


O uso dos arrays em programação é muito comum e muito util. Por isso criei esse artigo explicando como usa-los no shell. Arrays são vetores, eles são chamados via o indice, sempre iniciando no indice 0. Seguem alguns exemplos de como trabalhar como ele.

Segue abaixo um artigo muito interessante, para a demonstração de vetores com python.

Criando um array e executando um "append"(incrementando) com a leitura do terminal. A mesma execução vale para inserção 
#!/usr/bin/env /bin/bash
echo "escolha um numero" read a array[0]="$a" echo "escolha outro numero" read b array[1]="$b" echo ${array[@]}
output:
escolha um numero
1
escolha outro numero
bazinga
1 bazinga
Criando um array, adicionando posições e alterando as posições criadas.
#!/usr/bin/env /bin/bash
array[0]="1"
array[1]="2"
echo ${array[@]}
array[2]="3"
echo ${array[@]}
array[2]="bazinga"
echo ${array[@]}
output:
1 2
1 2 3
1 2 bazinga

Criando um array e exibindo num loop(for) no shell.

#!/usr/bin/env bash
#Autor: Rodrigo Cunha
#Projeto: poc
Array=('200' '301' '400' '501')

for x in ${Array[@]};
do
echo $x
done
Ou via pipeline:

$Array=('200' '301' '400' '501' 'Bazinga') && for i in ${array[@]};do echo $i;done
Tem um uso interessante para testar varios

Pegando o tamanho(leng) do array, no linux.
array=("1" "2" "bazinga") && tarray=${#array[@]} && echo $tarray

#!/usr/bin/env bash
#Autor: Rodrigo Cunha
#Projeto: poc
Array=('200' '301' '400' '501' 'bazinga')
## pega o tamanho do array
size=${#array[@]}
## Utilizando o loop.
for (( i=0; i<$size; i++ ))
do echo "${array[$i]}"
done

##TODO
Criar via while.
#!/usr/bin/env bash
#Autor: Rodrigo Cunha
#Projeto: poc
array=('200' '301' '400' '501' 'Bazinga')

count=tarray=${#array[@]}
contador=0
while [  $contador -bt $count ]; do
      echo ${array[$contador]}
      echo "$contador";
      let contador = contador+1; 
done

##DONE
Um método interessante de se trabalhar no shell, é trabalhar com funções.
#!/usr/bin/env bash
#Autor: Rodrigo Cunha
#Projeto: poc-array
array=('200' '301' '400' '501')

function main(){
for i in ${array[@]}
do
echo $i
done
}
main

Bibliografia:
Referencias:







sexta-feira, 6 de dezembro de 2019

AWK:Processando avançado de textos

Documento:
~
Maria da Silva;DP RJ
Ana dos Santos Souza;DP SP
~
Output desejado:
-
Maria Silva RJ
Ana Souza SP
-
Problema: Eu preciso utilizar o primeiro e o ultimo nome dos usurios bem como o estado correspondente.

Solução com AWK:
$ awk -F '[[:blank:];]+' '{ print $1, $(NF-2), $NF }' doc
~
Maria Silva RJ
Ana Souza SP
~
Suporte: Itamar, telegram.
Dificuldade :Ainda não entendi o uso do Field  '[[:blank:];]+'
Aprendizado: O $NF significa a posição na linha do caracter, no caso $(NF-2) significa Numero-2.

Antes dessa solução, tentamos uma solução utilizando o comando:
$ awk -F '[ ;]+' '{ print $1, $(NF-2), $NF }'
Não compreendi o uso da expressão regular
<code>
'[ ;]+'
</code>

sexta-feira, 11 de outubro de 2019

#SQL Comandos e Administração.

Alterar A estrutura da Tabela.
Alterar dado(DML) da tabela.

#Alterar a estrutura da tabela ativos, a coluna fk_tipo para enum('fii','acao','td')
>alter table ativos add column fk_tipo enum('fii','acao','td') not null after id;
#Alterar o dado fk_id_acoes, da tabela ativos.
>update ativos set fk_id_acoes='1' where id='3';

quarta-feira, 9 de outubro de 2019

segunda-feira, 7 de outubro de 2019

SQL Templates - Criando uma Tabela.

Criar Tabelas:
  • Criar tabela tabela_teste de itens com 7 campos:
    • ID[Primary key]
    • item[varchar]
    • precodevenda[float]
    • loja[$loja.nome]
    • categoria[$produto.categoria]
    • subcategoria[$produto.subcategoria]
    • datadecompra[$produto.datacompra];
>create database teste;
>use teste;
>create table loja (
id int not null primary key AUTO_INCREMENT, 
nome varchar(255) not null,
endereco varchar(255) not null,
cep int not null,
)
engine=innodb default charset = utf8;

>create table produto (
id int not null primary key AUTO_INCREMENT, 
nome varchar(255) not null,
categoria int not null,
subcategoria int not null,
datacompra date not null
)
engine=innodb default charset = utf8;

>create table tabela_teste (
id int not null primary key AUTO_INCREMENT, 
item varchar(255) not null,
precovenda varchar(255),
fk_loja int not null,
fk_categoria int not null,
fk_subcategoria int not null,
fk_datadecompra int not null
)
engine=innodb default charset = utf8;