Dúvida shell script [RESOLVIDO]

1. Dúvida shell script [RESOLVIDO]

Alessandro Simão
alessandro_ass

(usa Debian)

Enviado em 04/01/2012 - 11:54h

Bom dia!


Estou com um problema no serviço...

Preciso fazer um for nessa sintaxe:

for i in `cat lista`...


Contudo o conteudo do arquivo lista é uma string separada por espaços em cada linha (Ex: linux is the best)

Preciso saber como posso setar um delimitador com duplo espaço no comando cat ou algo similar para que seja considerada toda a string para o "cat" e posteriormente, após o duplo espaço, ser considerada a próxima string da outra linha.



Ajudem, plz!


Obrigado!


  


2. Re: Dúvida shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 04/01/2012 - 12:21h

Faz com while



while read i
do
echo "$i" # aqui vc notará que o $i tem o conteúdo de toda a linha...
done < lista.txt



3. Re: Dúvida shell script [RESOLVIDO]

Alessandro Simão
alessandro_ass

(usa Debian)

Enviado em 04/01/2012 - 13:28h

Tentei aqui, mas ele pega o conteúdo de todas as linhas, não apenas de uma e depois outra...


Mais alguma sugestão?


4. Re: Dúvida shell script [RESOLVIDO]

marcelo guatura barbosa da silva
mguatura

(usa Debian)

Enviado em 04/01/2012 - 14:19h

Deixa ver se entendi, voce quer trabalhar com o conteudo do arquivo linha por linha? ele pega uma linha e faz alguma coisa e depois pega a segunda e assim por diante?


5. Re: Dúvida shell script [RESOLVIDO]

Alessandro Simão
alessandro_ass

(usa Debian)

Enviado em 04/01/2012 - 14:33h

Isso mesmo.

O problema que tenho enfrentado é que por causa dos espaços entre as palavras ele não pega todo o conteúdo da respectiva linha, pega picado.


6. Re: Dúvida shell script [RESOLVIDO]

marcelo guatura barbosa da silva
mguatura

(usa Debian)

Enviado em 05/01/2012 - 10:08h

Fiz um script modelo aqui para voce seguir, com ele voce consegue pegar linha por linha do arquivo e trabalhar com ela inteira.

#!/bin/ksh

variavel=`cat arquivo.txt | wc -l`

while [ $variavel -gt 0 ] ; do

linha=`cat arquivo.txt | head -$variavel | tail -1`

variavel=`echo "$variavel-1" | bc`

done


Da uma olhada qualquer coisa avisa ai que te ajudo.


7. Re: Dúvida shell script [RESOLVIDO]

Raimundo Alves Portela
rai3mb

(usa Outra)

Enviado em 05/01/2012 - 10:44h

Tem certeza que isso não deu certo?


i=0
while read LINHA
do
echo "$i : $LINHA" # aqui vc notará que o $LINHA tem o conteúdo de toda a linha...
i=$((i+1))
done < lista.txt


Pra mim sempre funcionou :-(

POde substituir por


i=0
cat lista.txt | while read LINHA
do
echo "$i : $LINHA" # aqui vc notará que o $LINHA tem o conteúdo de toda a linha...
i=$((i+1))
done



8. Re: Dúvida shell script [RESOLVIDO]

Alessandro Simão
alessandro_ass

(usa Debian)

Enviado em 06/01/2012 - 17:31h

Cara, funcionou sim... eu que não havia visto a necessidade de implementar o código para trabalhar com cada linha...


Ficou assim:

cat lista | while read linha; do grep "${linha}" * | awk -F "[" '{print $2}' | awk -F "]" '{print $1}'; done





Muito obrigado!


Viva a filosofia GNU!






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts