Array não concatena corretamente [RESOLVIDO]

1. Array não concatena corretamente [RESOLVIDO]

Marcio
mazinatti

(usa Antergos)

Enviado em 11/11/2015 - 18:30h

Boa Noite!!

Pessoal sou novo e estou tentando fazer um script que pega os dados de um arquivo txt coloque em uma array, em seguida tento trabalhar com cada resultado, mas não esta saindo como prentendia, podeme me ajudar???

#!/bin/bash

export teste1=0123
cont=0
function teste(){
echo "---Inicio---" >Teste.txt
arrayNom=( $(cat Lista_Palavras.txt) )
for nome in "${arrayNom[@]}"; do
echo $cont
echo $nome >> Teste.txt
echo $teste1$nome >> Teste.txt
echo "$nome$teste1" >> Teste.txt
echo $teste1$nome$teste1 >> Teste.txt
echo "$nome$teste1$nome" >> Teste.txt
cont=$(($cont + 1))
unset nome
continue
done
}
teste


Arquivo(Lista_Palavras.txt)
aaaa
bbbb
cccc
bbbb
eeee
.
.
.
zzzz


$ ./arruma.sh #Ao executar sai dessa forma

0
0123aaaa
0123
0123aaaa
0123aaaa
.
.
.
26 ## O único que saiu como queria os demais sairam como escrito a cima
0123zzzzzz
zzzzzz0123
0123zzzzzz0123
zzzzzz0123zzzzzz


##Queria que ficasse:
aaaa
0123aaaa
aaaa0123
0123aaaa0123
aaaa0123aaaa
.
.
.

Alguem pode me dar uma luz onde posso estar errando???







  


2. RESP: Tópico: Array não concatena corretamente

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 12/11/2015 - 20:19h

Boa Noite mazinatti .
A maneira como você esta " pegando a ARRAY" não me é costumeira . . . :)
A forma que você usou "for nome in "${arrayNom[@]}", pega todas ARRAYS.

Segue o Script . . . TESTADO.... :)

#!/bin/bash

teste(){
TST=0123
NOMES=(aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn oooo pppp qqqq rrrr ssss tttt uuuu vvvv wwww xxxx yyyy zzzz)
echo "---Inicio---" > Teste.txt
for ((X=0;X<${#NOMES[*]};X++));do
echo -e "\n$X" >> Teste.txt
echo "${NOMES[$X]}" >> Teste.txt
echo "${TST}${NOMES[$X]}" >> Teste.txt
echo "${NOMES[$X]}${TST}" >> Teste.txt
echo "${TST}${NOMES[$X]}${TST}" >> Teste.txt
echo "${NOMES[$X]}${TST}${NOMES[$X]}" >> Teste.txt
done
}
teste

################# FIM DO SCRIPT##############

Outro modo de obter o mesmo resultado . . .
Segue:
#Gera "PALAVRAS"
for X in {a..z};do echo "$X$X$X$X" >> PALAVRAS.txt; done
Y=0123;echo " ---Inicio--- " > TESTES.txt;for ((X=1;X<27;X++));do VAR=$(sed -n "$X"p PALAVRAS.txt);echo -e " $X\n $VAR\n $Y$VAR\n $VAR$Y\n $Y$VAR$Y\n $VAR$Y$VAR\n" >> TESTES.txt;done

Espero que seja útil . . .
Abç.:
Marcelo Oliver


3. Re: Array não concatena corretamente

Marcio
mazinatti

(usa Antergos)

Enviado em 16/11/2015 - 16:50h

msoliver escreveu:


Boa Noite mazinatti .
A maneira como você esta " pegando a ARRAY" não me é costumeira . . . :)
A forma que você usou "for nome in "${arrayNom[@]}", pega todas ARRAYS.

Segue o Script . . . TESTADO.... :)

#!/bin/bash

teste(){
TST=0123
NOMES=(aaaa bbbb cccc dddd eeee ffff gggg hhhh iiii jjjj kkkk llll mmmm nnnn oooo pppp qqqq rrrr ssss tttt uuuu vvvv wwww xxxx yyyy zzzz)
echo "---Inicio---" > Teste.txt
for ((X=0;X<${#NOMES[*]};X++));do
echo -e "\n$X" >> Teste.txt
echo "${NOMES[$X]}" >> Teste.txt
echo "${TST}${NOMES[$X]}" >> Teste.txt
echo "${NOMES[$X]}${TST}" >> Teste.txt
echo "${TST}${NOMES[$X]}${TST}" >> Teste.txt
echo "${NOMES[$X]}${TST}${NOMES[$X]}" >> Teste.txt
done
}
teste

################# FIM DO SCRIPT##############

Testei uma outra maneira de obter o mesmo resultado . . .
Segue:
Gera "PALAVRAS"
for X in {a..z};do echo "$X$X$X$X" >> PALAVRAS.txt; done
Y=0123;echo " ---Inicio--- " > TESTES.txt;for ((X=1;X<27;X++));do VAR=$(sed -n "$X"p PALAVRAS.txt);echo -e " $X\n $VAR\n $Y$VAR\n $VAR$Y\n $Y$VAR$Y\n $VAR$Y$VAR\n" >> TESTES.txt;done

Espero que seja útil . . .
Abç.:
Marcelo Oliver


Marcelo...
Fiz as alterações que me aconselhou e realmente, no arquivo que criou ou na array que passou ele executa certinho, mas parece que meu arquivo ou a maneira ao qual o gerei... entretanto cada palavra esta em uma linha sem espaço tudo certinho...
A Saída ainda esta errada.
Tem a possibilidade do script a baixo deixar alguma "sujeira" em cada linha, mesmo não tendo caractere especial ou espaço no começo ou final de cada linha?
Meu arquivo é gerado assim:
Tenho um texto, livro ou dicionário ex: Dicionário_portugues.txt.
Um script para organizar as palavras por linha retirando pontos e espaços.

criaTemp="Temp"
criaTemp2="Temp1"
ArquivoDefinitivo="LIsta-Palavras"
cat "Dicionário_portugues.txt" | tr " " "\n" >> $criaTemp.txt #Coloco cada palavra em uma linha a partir do Espaço
tr -d '.'','';'':''¨' <$criaTemp.txt> $criaTemp2.txt #Retiro os pontos
cat $criaTemp2.txt | sort | uniq -u > $ArquivoDefinitivo.txt # Organizo e retiro as palavras repetidas.
rf -f $criaTemp.txt #Removo Arquivos Temporários
rf -f $criaTemp2.txt





4. Resp: Tópico: Array não concatena corretamente

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 16/11/2015 - 17:41h

Boa tarde Marcio.
Verifiquei e testei os comando que vc passou e estão corretos ....
Execute:
cat -vET $ArquivoDefinitivo.txt
Para verificar se existem caracteres estranhos.
Outra possibilidade, é a origem de tudo ....
Esse dicionário está em qual formato?
Se em DOS/WINDOWS (CR LF), vai dar problema.
O ideal seria fazer um teste com o seu arquivo.
Tem como você disponibilizar?
Qual Distribuição/Versão vc está usando?

Att.:
Marcelo

EDITADO
Use:
tr -d [[:punct:]] < $criaTemp.txt > $criaTemp2.txt # Para tirar a pontuação
O comando que vc postou ( tr -d '.'','';'':''¨' <$criaTemp.txt> $criaTemp2.txt #Retiro os pontos), deu uns erros aqui ....




5. Re: Array não concatena corretamente

Marcio
mazinatti

(usa Antergos)

Enviado em 16/11/2015 - 21:22h

msoliver
O dicionário foi criado no Bloco de notas do windows sem tratamento, depois passei para o linux e rodei o script para separar e retirar pontos etc...
Usei o comando que me indicou "cat -vET $ArquivoDefinitivo.txt" apareceu a "sujeira" ao final de cada linha, onde gera a saida errada.
aaaa^M$
bbbb^M$
cccc^M$
.
.
.
apenas o zzzz não tinha.

Quando se descobre a causa "cat -vET $ArquivoDefinitivo.txt" a salução fica mais fácil... muitissimo obrigado pela ajuda

resolvido com o comando
echo "$(cat ArquivoDefinitivo.txt | tr -d '\b\r')"> ArquivoDefinitivo.txt



6. RESP: Tópico: Array não concatena corretamente

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 17/11/2015 - 17:34h

Que bom que foi resolvido....
Uma outra opção é o file ARQUIVO
Exemplo:
file municipios.txt
municipios.txt: ISO-8859 text, with CRLF line terminators
Te mostra as caracteristicas do arquivo.

PS.: Não esqueça de marcar como resolvido...

Abraço,
Marcelo








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts