Ajuda com Bash

1. Ajuda com Bash

leandro chaves
lccunha

(usa Ubuntu)

Enviado em 29/08/2013 - 14:28h

estou entrando agora na linguagem e estava procurando algum comando pra abrir um arquivo de texto e jogar seu conteúdo numa variável mas só encontrei os comandos CAT e LESS, sendo que os dois jogam o conteúdo na tela e não é esse o objetivo, alguém poderia ajudar?


  


2. Re: Ajuda com Bash

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 29/08/2013 - 14:53h

usando o cat + ">>" não ajuda ?


3. Re: Ajuda com Bash

leandro chaves
lccunha

(usa Ubuntu)

Enviado em 29/08/2013 - 15:36h

seria cat 'endereço do arquivo' >> 'variável de saída'?


4. Re: Ajuda com Bash

Daniel Lara Souza
danniel-lara

(usa Fedora)

Enviado em 29/08/2013 - 15:39h

isso mesmo


5. Re: Ajuda com Bash

leandro chaves
lccunha

(usa Ubuntu)

Enviado em 29/08/2013 - 18:35h

Não funcionou, tá mostrando o conteúdo do arquivo mesmo assim. Preciso apenas percorrer um arquivo de texto e escolher uma palavra numa linha aleatoriamente, um script que encontrei pra isso foi esse

oldIFS=$IFS
IFS=$'n'
for LINHA in $(cat 'texto.txt')
do
comando
done
IFS=$old_IFS

mas ainda não entendi como acessar uma linha aleatoriamente


6. Re: Ajuda com Bash

joao
jlcwb123

(usa Outra)

Enviado em 29/08/2013 - 22:43h

Li e reli mais e não entendi o que voce quer achar ?

ex:
$ grep -R "ola mundo" ~/bakup/ 2>/dev/null | cut -d: -f2 | uniq

Vamos dissecar o comando:
grep -R "ola mundo" ~/bakup/ - procura recursivamente pela palavra "ola mundo" em todos arquivos a partir do diretório ~/bakup;
2>/dev/null - direciona as linhas de erro para /dev/null;
| (pipe) - redireciona a saída do comando anterior (grep -R ola mundo ~/bakup/ 2>/dev/null), para a entrada do próximo comando;
cut -d: -f2 - o grep gera um arquivo no seguinte formato:

/path/arquivo:conteúdo da linha

Como queremos saber apenas qual arquivo contém a palavra "ola mundo", utilizaremos o comando cut para tratar a saída. O cut lê a saída do comando anterior e seleciona apenas o segundo campo (-f2), separado pelo delimitar (-d) "dois pontos" (":"), ignorando tudo que estiver depois do delimitador.
uniq - caso haja mais de uma ocorrência da palavra "ola mundo" em um mesmo arquivo, será exibida uma linha para cada ocorrência. O uniq remove as linhas duplicadas.

so não vou responder o que e ~ pois senao e o fim do mundo

Simples assim .?


7. Re: Ajuda com Bash

Fernando
phoemur

(usa Debian)

Enviado em 29/08/2013 - 23:13h

conteúdo do arquivo na variável:

VARIAVEL="$(cat arquivo.txt)"


Agora se for só pra pegar uma palavra aleatória não precisaria nem disso...
Como é o seu arquivo de palavras?


8. Re: Ajuda com Bash

Fernando
phoemur

(usa Debian)

Enviado em 29/08/2013 - 23:34h

Fiz um oneliner legal pra imprimir palavras aleatórias de arquivos:


xargs -n1 < arquivo.txt | eval "sed -n $(echo $RANDOM % $(wc -w < arquivo.txt) + 1 | bc)p"



9. Re: Ajuda com Bash

leandro chaves
lccunha

(usa Ubuntu)

Enviado em 30/08/2013 - 09:44h

Os arquivos de palavras são assim, em cada um deles tem palavras, cada uma numa linha, escolhe uma no primeiro e compara com uma no segundo, se o gênero for igual junta as duas, senão, roda novamente. Eu tava usando um identificador em cada uma pra comparar os gêneros, .f no final é feminino e .m é masculino. Seria isso basicamente. Depois tem que juntar com um numero aleatório mas isso é de boa.


10. Re: Ajuda com Bash

leandro chaves
lccunha

(usa Ubuntu)

Enviado em 30/08/2013 - 15:39h

xargs -n1 < arquivo.txt | eval "sed -n $(echo $RANDOM % $(wc -w < arquivo.txt) + 1 | bc)p"


esse código funcionou aqui ! tá escolhendo uma palavra aleatória toda vez que roda, precisaria agora apenas guardar o conteúdo desse RANDOM numa variável, ao invés de jogar na tela. Uma atribuição simples não funcionaria né? Algo como $palavra1 = $RANDOM % ...






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts