Contar String [RESOLVIDO]

1. Contar String [RESOLVIDO]

Alexandre Rios
alex_tj

(usa Outra)

Enviado em 14/01/2019 - 18:12h

Galera,

Boa tarde,

Eu tenho 2 arquivos onde:
O primeiro, por exemplo, GRUPO_ECONOMICO.txt, tem os seguintes valores
Produtor rural de banana nanica;
Agroexportador de café irrigado;
Plantio de maçã;
Plantio de cafe;
Teste;


No segundo arquivo, PRODUTOS.txt eu tenho:
Banana;
Nanica;
Café;
Maçã;


Com isso, ignorando os acentos gráficos e maiúsculas e minúsculas, preciso de um terceiro que verifique quais as palavras do segundo arquivo foram encontradas nas frases do primeiro e consequentemente sua quantidade, exemplo:
Saída do arquivo 3 deverá ficar (nome do terceiro arquivo: ARQUIVO_MATCH.txt):
produtor rural de banana nanica|banana;nanica|2;
agroexportador de café irrigado|café|1;
plantio de maçã|maçã|1;
plantio de cafe|café|1;
teste||0;


Lembrando que qualquer um dos 2 arquivos principais podem ter palavras acrescidas a qualquer tempo de forma dinâmica, por isso ao executar o shell ele também precisará gerar o terceiro arquivo dinamicamente conforme as palavras forem acrescentadas.

Desde já agradeço.

Abç.


  


2. MELHOR RESPOSTA

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 15/01/2019 - 20:34h

alex_tj escreveu:

Galera,

Boa tarde,

Eu tenho 2 arquivos onde:
O primeiro, por exemplo, GRUPO_ECONOMICO.txt, tem os seguintes valores
Produtor rural de banana nanica;
Agroexportador de café irrigado;
Plantio de maçã;
Plantio de café;
Teste;


No segundo arquivo, PRODUTOS.txt eu tenho:
Banana;
Nanica;
Café;
Maçã;


Com isso, ignorando os acentos gráficos e maiúsculas e minúsculas, preciso de um terceiro que verifique quais as palavras do segundo arquivo foram encontradas nas frases do primeiro e consequentemente sua quantidade, exemplo:
Saída do arquivo 3 deverá ficar (nome do terceiro arquivo: ARQUIVO_MATCH.txt):
produtor rural de banana nanica|banana;nanica|2;
agroexportador de café irrigado|café|1;
plantio de maçã|maçã|1;
plantio de cafe|café|1;
teste||0;


Lembrando que qualquer um dos 2 arquivos principais podem ter palavras acrescidas a qualquer tempo de forma dinâmica, por isso ao executar o shell ele também precisará gerar o terceiro arquivo dinamicamente conforme as palavras forem acrescentadas.

Desde já agradeço.

Abç.


Boa noite.
Segue sugestão:
padrao=$(xargs < produtos.txt|sed 's/; /\\|/g;s/\;//')
NL=1;
NR=$(awk 'END {print NR}' grupo_economico.txt);
while (($NL<=$NR));do linha=$(sed -n "${NL}p" grupo_economico.txt);
busca=$(grep -i -o "${padrao}" <<< "$linha"|paste -sd ' ');
echo "${linha}|${busca/ /|}|$(wc -w <<< "$busca")";
let NL++;
done
SAÍDA:
Produtor rural de Banana Nanica|Banana|Nanica|2
Agroexportador de café irrigado|café|1
Plantio de Maçã|Maçã|1
Plantio de Café|Café|1
Teste||0


Com isso, ignorando os acentos gráficos e maiúsculas e minúsculas, . . .
Maiúsculas e Minusculas, sem problemas.
Palavras acentuadas, é bem complexo....
Utilizei as "PALAVRAS", como estão grafadas no arquivo "GRUPO_ECONOMICO.txt"

Marcelo Oliver



3. Re: Contar String [RESOLVIDO]

Mauriciodez
Mauriciodez

(usa Debian)

Enviado em 15/01/2019 - 21:53h

msoliver escreveu:
Palavras acentuadas, é bem complexo....


vc poderia adaptar isso ao script para retirar os acentos

for x in `cat arquivo.txt`; do
mv $X $(echo "$xi" | sed 'y/áÁàÀãÃâÂéÉêÊíÍóÓõÕôÔúÚçÇ/aAaAaAaAeEeEiIoOoOoOuUcC/')
done


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

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

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







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts