[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Pegar_peda�o_de_texto
From: |
Aurelio Marinho Jargas |
Subject: |
Re: [shell-script] Pegar_pedaço_de_texto |
Date: |
Fri, 25 Jun 2004 14:20:01 -0300 (ART) |
olá endrigo,
--- "Endrigo G. Ferreira" <address@hidden> escreveu:
> Tô precisando pegar um pedaço de um texto. Vou explicar.
> Em uma estrutura mais ou menos assim:
> /tmp/log/user1
> arq1.log
> arq2.log
> arq3.log
> ...
> arq999.log
...
> Eu preciso criar um programa que entre em cada um desses arquivos,
ok, vamos por partes (e sem fazer a piadinha previsÃvel do jack).
o primeiro passo é criar um programa que entre nos diretórios
de cada usuário e leia os arquivos. uma das maneiras de se
fazer isso é com um for:
#!/bin/bash
cd /tmp/log
for user in user* ; do
cd $user
echo "estou no dir $user"
echo "aqui tem $(ls -l | wc -l) arquivos"
cd .. # sobe um diretório
done
esse é o esqueleto do teu script, ele entra em cada diretório
de usuário e mostra quantos arquivos tem dentro.
não adianta pensar no resto do problema enquanto isso não
estiver funcionando.
> se achar um determinado string ele salva o conteúdo (várias
> linhas) que tem logo apos essa string até encontrar outra
> determinada string
para achar um bloco de linhas dentro de um arquivo você pode
usar o grep ou o sed. como não é um número fixo de linhas
após a primeira string, não dá pra ser o grep. com o sed,
a sintaxe é a seguinte:
sed -n '/string1/ , /string2/ p' arquivo
e o sed só mostrará na tela o trecho de linhas que está entre
string1 e string2, inclusive as próprias.
teste esse comando isolado, em um arquivo apenas. depois que
estiver funcionando, coloque dentro do script, dentro do for,
logo após os 'echo'.
> em um único arquivo userX.
o sed joga na tela a saÃda, então basta direcioná-la para
um arquivo com o >
sed -n ... > userX
mas como é um único arquivo de resultado para toda a busca,
use o redirecionamento que anexa no final ao invés de apagar,
o >>:
sed -n ... >> userX
isso vai fazer com que o arquivo userX seja criado dentro do
diretório do usuário. se quiser que os arquivos com o resultado
fiquem no mesmo nÃvel dos diretórios, para não misturar com
os logs, use o .. para subir um diretório:
sed -n ... >> ../userX
ou melhor, no teu script:
sed -n ... >> ../$user.log
ah, o ... do sed é aquele comandão lá de cima, já o ../
é literal mesmo.
> pelo que percebi, é possÃvel fazer isso com shell script.
> E como eu estou começando a aprender shell script, não
> tô conseguindo.
percebeu certo! é o tipo de tarefa que não há linguagem
melhor que o shell para fazer.
dê uma olhada nos links de http://aurelio.net/shell para
aprender mais sobre shell script e se apaixonar de uma vez
pela linguagem.
falou!
=====
--
Aurelio Marinho Jargas, Curitiba, Conectiva
A odisseia verde no FISL http://aurelio.net/curso/fisl
______________________________________________________________________
Yahoo! Mail - agora com 100MB de espaço, anti-spam e antivÃrus grátis!
http://br.info.mail.yahoo.com/
- Pegar pedaço de texto, Endrigo G. Ferreira, 2004/06/25
- Re: [shell-script] Pegar_pedaço_de_texto,
Aurelio Marinho Jargas <=