Comparação de NCM Shell Script [RESOLVIDO]

1. Comparação de NCM Shell Script [RESOLVIDO]

Caio
caiocpg

(usa Outra)

Enviado em 04/08/2017 - 09:33h

Ola pessoal, eu montei um script para usuário digitar o ncm e comparar se o ncm existe ou não, vou postar os meus comandos:
#!/bin/bash

tabela=$(cat /lista.txt)
for (( loop=1;loop>0;loop++));do # para evitar em executar o script toda vez...
echo -e "\nPor favor, digite o NCM:";
read ncm;
clear
grep -x $ncm /lista.txt > /lista2.txt
tabela2=$(cat /lista2.txt)
if [ $ncm = $tabela2 ] 2> /dev/null; then
echo "ncm $ncm esta correto"
else
echo "O ncm $ncm esta errado ou inexistente"
fi
done

O Comando é bem simples e funcional, Agora eu estou querendo pegar todo ncm de um cliente "ncm_cliente.txt", comparar na "tabela_ncm" e gerar um log para saber se existe NCM inválido ou inexistente... Tive esta idéia porque com o tempo o governo anula alguns NCM e fica complicado para descobrir, só quando dá rejeição na nota que eu posso arrumar...
Tecnicamente não tenho muita experiência de como proceder... O que eu não estou conseguindo é fazer esta comparação, será que é possível? Alguém pode me dar um exemplo de como eu faço isto?


  


2. MELHOR RESPOSTA

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 04/08/2017 - 23:35h

comm -13 lista.txt meuncm.txt

Por que não vi esse comando antes! rsrs

=====
Edit
E eu criando for aninhado aqui:

#!/bin/bash
ncmcompleto=$(cat lista.txt)
meuncm=$(cat meuncm.txt)
encontrei=0
for _meuncm in $meuncm;
do
for _ncmcompleto in $ncmcompleto;
do
if [ "$_meuncm" == "$_ncmcompleto" ];
then
encontrei=1
fi
done

if [ "$encontrei" == "0" ];
then
echo $_meuncm
fi
encontrei=0
done

Mas tá funcional tbm! XD

3. Re: Comparação de NCM Shell Script [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 04/08/2017 - 11:52h

caiocpg escreveu:

O Comando é bem simples e funcional, Agora eu estou querendo pegar todo ncm de um cliente "ncm_cliente.txt", comparar na "tabela_ncm" e gerar um log para saber se existe NCM inválido ou inexistente... Tive esta idéia porque com o tempo o governo anula alguns NCM e fica complicado para descobrir, só quando dá rejeição na nota que eu posso arrumar...
Tecnicamente não tenho muita experiência de como proceder... O que eu não estou conseguindo é fazer esta comparação, será que é possível? Alguém pode me dar um exemplo de como eu faço isto?


velho ... o 'diff' não te resolve não ???
https://www.vivaolinux.com.br/dica/diff-Comando-com-exemplos

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



4. O comando diff não resolveria

Caio
caiocpg

(usa Outra)

Enviado em 04/08/2017 - 14:57h

Olá Mauriciodez, o comando diff eu conheço, neste caso não resolveria o meu problema...
Um exemplo eu tenho uma lista de 5 produtos com ncm cadastrados, já a lista 2 são os ncm que acabei de baixar, são em torno de 14765 registros, ele tem que pegar o registro da minha lista "0102.29.11" e comparar linha por linha até achar o NCM que está na lista 2, caso contrário me geraria um log de ncm não encontrado... Ele vai percorrer os 14765 registros entendeu? E assim por diante...
minha lista:
0102.29.11
0102.29.19
0102.29.90
0102.31.10
0102.31.90

obs: neste script que montei até consigo fazer isto, basta eu executar o meu script ncm.sh >log que vai gerar todos os logs que preciso, basta eu copiar os meus ncm e colar que vai dar certo... Mas... eu gostaria saber se é possível fazer um tipo de laço de repetição que pega a minha lista "lista1" compara para a "lista 2" NCM..


5. Re: Comparação de NCM Shell Script [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 04/08/2017 - 15:27h

caiocpg escreveu:
Obs: neste script que montei até consigo fazer isto, basta eu executar o meu script ncm.sh >log que vai gerar todos os logs que preciso, basta eu copiar os meus ncm e colar que vai dar certo... Mas... eu gostaria saber se é possível fazer um tipo de laço de repetição que pega a minha lista "lista1" compara para a "lista 2" NCM..


entendi ... da para fazer sim e não é muito complicado ... porém minha grande frustração é ser incapaz de fazer um loop ... mais guenta aí que já chega um que vai fazer isso pra vc !!!


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



6. Re: Comparação de NCM Shell Script [RESOLVIDO]

Caio
caiocpg

(usa Outra)

Enviado em 04/08/2017 - 17:15h

Mauriciodez escreveu:

caiocpg escreveu:
Obs: neste script que montei até consigo fazer isto, basta eu executar o meu script ncm.sh >log que vai gerar todos os logs que preciso, basta eu copiar os meus ncm e colar que vai dar certo... Mas... eu gostaria saber se é possível fazer um tipo de laço de repetição que pega a minha lista "lista1" compara para a "lista 2" NCM..


entendi ... da para fazer sim e não é muito complicado ... porém minha grande frustração é ser incapaz de fazer um loop ... mais guenta aí que já chega um que vai fazer isso pra vc !!!


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Mauriciodez não entendi o que você quis dizer "porém minha grande frustração é ser incapaz de fazer um loop" isto é uma indireta para mim?


7. Re: Comparação de NCM Shell Script [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 04/08/2017 - 17:20h

caiocpg escreveu:
isto é uma indireta para mim?


Não campeão ... foi um desabafo .. a galera daqui sabe que por mais que eu tente eu não consigo fazer um loop ... relaxa !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



8. Re: Comparação de NCM Shell Script [RESOLVIDO]

Caio
caiocpg

(usa Outra)

Enviado em 04/08/2017 - 17:49h

Mauriciodez escreveu:

caiocpg escreveu:
isto é uma indireta para mim?


Não campeão ... foi um desabafo .. a galera daqui sabe que por mais que eu tente eu não consigo fazer um loop ... relaxa !!!

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------


Opa, rsrs, não sou muito bom em programação para falar a verdade sou bem leigo... mas tenho uma idéia, acho que o meu caminho está errado, tenho que pegar este arquivo e gravar na variável, vou tentar fazer o laço de repetição através da posição... Tipo... Posição A, posição B em diante... Vou tentar fazer e já passo o meu resultado...


9. Re: Comparação de NCM Shell Script [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 04/08/2017 - 18:03h

caiocpg escreveu:
Opa, rsrs, não sou muito bom em programação para falar a verdade sou bem leigo... mas tenho uma idéia, acho que o meu caminho está errado, tenho que pegar este arquivo e gravar na variável, vou tentar fazer o laço de repetição através da posição... Tipo... Posição A, posição B em diante... Vou tentar fazer e já passo o meu resultado...


já que vc sabe fazer o loop fica fácil pra vc ... pegue o conteudo da linha 1 e vai ser sua variável $linha, depois vc procura $linha no arquivo NCM
grep $linha arquivo.ncm 


se existir escreva $linha no arquivo A
senão
escreva $linha no arquivo B
incremente 1 linha em $linha
refaça até a ultima linha ( loop )

entendeu o que eu quis dizer ??? é uma pena eu não saber fazer essa P*RRA de loop !!!


------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------



10. Re: Comparação de NCM Shell Script [RESOLVIDO]

Jose Renan
JoseRenan

(usa Ubuntu)

Enviado em 04/08/2017 - 22:45h

Considerando duas listas com somente os códigos NCM. listansm.txt com todos os que vc baixou e ncms.txt as dos produtos da nf.

#!/bin/bash
while read linha;
do
aux=$(cat listancm.txt | grep -x $linha | wc -l) #Qtd de vezes que apareceu na lista
if [ "$aux" == "0" ]; #Se qtd é 0 entende-se que não existe na lista
then
echo "$linha"
fi
done < ncms.txt > inexistente.txt #Salva os NCM não encontrados



11. Estou quase lá

Caio
caiocpg

(usa Outra)

Enviado em 04/08/2017 - 22:52h

consegui fazer um For mas ainda está incompleto, estou tentando fazer agora que ele me mostre somente os ncm errado ou inexistente...
alterei minhas variáveis para entender melhor... O "ncmcompleto" é o ncm da lista que baixei da internet, o "meuncm" são os que tenho que são estes:
01022911
01022919
01022990
01023110
01023190
99999999
65465465
44984984
01

Os números que não são válidos são estes: 99999999, 65465465 e 44984984, quando executo eles mostram os ncm somente os corretos:
01022911
01022919
01022990
01023110
01023190
01

Só que no momento quero que me mostre o contrário mas to quase lá rsrs...

Segue meu script abaixo:

#!/bin/bash

ncmcompleto=$(cat /lista.txt)
meuncm=$(cat /meuncm.txt)

for variavel in $meuncm
do
grep -x $variavel /lista.txt # ateh aqui funciona

done


12. Re: Comparação de NCM Shell Script [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 04/08/2017 - 23:59h

mauricio@phantom ~ $ cat 1
01022911
01022919
01022990
01023110
01023190
99999999
65465465
44984984
01
mauricio@phantom ~ $ cat 2
01022911
01022919
01022990
01023110
01023190
01
mauricio@phantom ~ $ diff 1 2
6,8d5
< 99999999
< 65465465
< 44984984
mauricio@phantom ~ $

------------------------------------------| Linux User #621728 |-----------------------------------------

" Nem sempre é amigo aquele que te tira do buraco !!! ( Saddam Hussein )"

------------------------------------------| Linux User #621728 |-----------------------------------------




01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts