[shell-script] Re: Percorrer arquivos sequenciais

2008-08-13 Por tôpico voyeg3r
Será que uma substituição de processos com awk não resolveria?


--- Em shell-script@yahoogrupos.com.br, "tiagofei" <[EMAIL PROTECTED]> escreveu
>
> Pessoal, boa tarde, gostaria de saber se tem como usar curingas em vez
> de utilizar um while ou for, tipo, "$ touch teste[1-9].txt", ou ate
> mesmo setando permissoes no home dos usuarios
> 
> $ chown -R usuario1.grupo usuario1
> 
> algo tipo:
> $ chown -R usuario[1-28].grupo usuario[1-9]
> 
> 
> Valeu pela atenção. abs.
>




Re: [shell-script] ajuda num filtro de assunto de e-mail

2008-08-13 Por tôpico Cléoson Barreto
Olá!

 Seguindo a recomendação do Júlio:

# echo -e 'cialis [EMAIL PROTECTED] reinicializada\nCurso
Especialista\nCialis\nFree Cialis\nBuy [EMAIL PROTECTED]' | egrep
'(\b[Cc].?[Ii1\!\|[EMAIL PROTECTED]|].?[Ii1\!\|].?[SsZz5]\b)'

cialis viagra
[EMAIL PROTECTED]
Cialis
Free Cialis
Buy [EMAIL PROTECTED]


[]'s
Cléoson.

2008/8/12 Julio C. Neves <[EMAIL PROTECTED]>

>   Na expressão regular, use bordas (\b) para casar somente palavras
> inteiras.
> --
> Abraços,
> Julio
> *Em setembro estarei dando um treinamento
> Shell em Brasília (em 2 fins de semana).
> Mais informações: www.tecnologiabr.com.br
> Tel: (61) 3354-3162*
>
> 2008/8/12 Thiago Alencar <[EMAIL PROTECTED]
> >
>
>
> > Mas ai no caso eu só conseguirei pegar as ocorrências que estão no
> > começo da linha né! Estava analisando os tipos de ocorrências, e vi que
> tem
> > muitos caso onde a palavra está no meio do assunto, ex:
> >
> > Free Cialis
> > Buy Cialis
> >
> > Teria uma maneira pra conseguir pegar estes casos tb ?
> >
> > Grato desde já,
> >
> > Thiago Alencar
> >
> > - Mensagem original 
>

>
>
> 
> 
>


[As partes desta mensagem que não continham texto foram removidas]



[shell-script] Suporte Unix Pleno - Inglês Fluente

2008-08-13 Por tôpico Brq Informática
Olá

A BRQ Informática, empresa Integradora de Sistemas e Fornecedora de
Soluções, atuante no Mercado Tecnológico há 15 anos, com unidades em São
Paulo, Campinas, Rio de Janeiro, Curitiba, Brasília, com mais de 1.100
projetos finalizados, certificação CMMI nível 5 e certificação MPS.BR nível
A, contrata:

*Analista de Suporte Unix - Pleno*

Experiência com Suporte e Administração de Servidores, Unix, Linux, AIX,
HP-UX, Solaris
*Inglês fluente.*

Vaga inicialmente para 6 meses, com possibilidade de extensão.
Horário Comercial.

Disponibilidade para morar na região de Campinas - SP.

Os interessados enviar CV para: [EMAIL PROTECTED]
Assunto: Unix



-- 
---
Recursos Humanos
BRQ Campinas
http://www.brq.com
19.33031200


[As partes desta mensagem que não continham texto foram removidas]



[shell-script] Substituir um Arquivo Com Informação de O utros Dois

2008-08-13 Por tôpico Anderson - Listas
Pessoal, estou precisando de uma ajuda com um pequeno script que estou 
montando.

Não é algo complicado de se fazer, mas algo que com pouco experiência 
não estou conseguindo.

Vamos ao problema:

Tenho dois arquivos:

grupos.txt, que o conteudo dele é o seguinte:
grupo:*:usuario1,usuario2,usuario3 (resultado do comando # getent group 
 > grupos.txt)

usuarios.txt, que tem as informações dos usuários (resultado do comando 
# getent passwd > usuarios.txt)

Tratei o usuarios.txt da seguinte forma: # cat usuarios.txt | cut -d: 
-f1,5 | tr : ' '  para que pegasse apenas o nome de usuário e o nome 
completo das pessoas, e substituisse os : por espaço, ficando o arquivo 
com o seguinte formato:
usuario Nome Completo do Usuário, o que também tratei e deixei assim: 
usuario "Nome Completo do Usuário".

Agora o que quero fazer:

pegar todos os usuários pelo username e substituir pelo nome completo no 
arquivo grupos.txt, para que, ao invés de ficar  vomo está, ele me 
mostre o nome completo de cada pessoa que faz parte do grupo, ficando assim:

Grupo1:*:Nome Completo, Nome Completo 2, Nome Completo 3

Então o que pensei, pego a primeira referência de cada arquivo, e com um 
sed eu substituo. Se fosse fazer na mão, ficaria algo como:
# cat grupos.txt | sed 's/usuario/\"Nome Completo\"/'

Isso funciona para cada um, mas se fosse para fazer manualmente não 
estaria fazendo um script ;-)

Com isso resolvi fazer um laço para pegar o conteúdo de cada linha e 
jogar em uma variável para fazer a substituição do arquivo, o que 
começou mais ou menos assim:

#!/bin/bash
for i in $(cat usuarios.txt | cut -d' ' -f1) ;
do
VAR1=$i
done ;

for j in $(cat usuarios.txt | cut -d\" -f2) ;
do
VAR2=$j
done ;


E foi ai que me enrosquei. Pois, somente com isso, ele irá listar as 
linhas e jogá-las nas variáveis, mas com esse laço for vai ocorrer que 
as variáveis irão armazenar, dessa forma, a ultima ocorrência dos dois 
laços, correto? Então pensei que esses laçoes devam estar dentro de um 
while, talves, checando algo como:

CONT=`cat usuarios.txt | wc`
while [ $CONT -ge 0 ] ...


E com isso pegar cada linha do cat, para que ele faça algo como, pege a 
VAR1 e compare com a linha do grupo que possua o mesmo nome de usuário e 
substitua por VAR2.

Mas depois disse me enrosquei e fiquei na mão. Talvés existam formas, e 
acredito que sim, muito mais fáceis de fazer isso, mas didaticamente 
falando, poderiam dizer como terminar esse script, e se puderem oferecer 
uma solução amigável além da explicação seria bom para o aprendizado e 
para que da próxima vez eu não tenha que escrever um romance para obter 
ajuda.

Obrigado pela atenção.


Re: [shell-script] Substituir um Arquivo Com Informação de Outros Dois

2008-08-13 Por tôpico César Vianna
Segue uma sugestão:

Formato do arquivo usuarios.txt

x;Nome Completo


Formato do arquivo grupos.txt

grupo:x:y


Script para substituição:


IFS="
"
for i in `cat usuarios.txt`
do
 user=`cut -d";" -f1 <<< $i`
 nc=`cut -d";" -f2 <<< $i`#nc é o nome completo
 echo $user - $nc
 cat grupos.txt|sed "s/$user/$nc/"
done







2008/8/13 Anderson - Listas <[EMAIL PROTECTED]>

>   Pessoal, estou precisando de uma ajuda com um pequeno script que estou
> montando.
>
> Não é algo complicado de se fazer, mas algo que com pouco experiência
> não estou conseguindo.
>
> Vamos ao problema:
>
> Tenho dois arquivos:
>
> grupos.txt, que o conteudo dele é o seguinte:
> grupo:*:usuario1,usuario2,usuario3 (resultado do comando # getent group
> > grupos.txt)
>
> usuarios.txt, que tem as informações dos usuários (resultado do comando
> # getent passwd > usuarios.txt)
>
> Tratei o usuarios.txt da seguinte forma: # cat usuarios.txt | cut -d:
> -f1,5 | tr : ' ' para que pegasse apenas o nome de usuário e o nome
> completo das pessoas, e substituisse os : por espaço, ficando o arquivo
> com o seguinte formato:
> usuario Nome Completo do Usuário, o que também tratei e deixei assim:
> usuario "Nome Completo do Usuário".
>
> Agora o que quero fazer:
>
> pegar todos os usuários pelo username e substituir pelo nome completo no
> arquivo grupos.txt, para que, ao invés de ficar vomo está, ele me
> mostre o nome completo de cada pessoa que faz parte do grupo, ficando
> assim:
>
> Grupo1:*:Nome Completo, Nome Completo 2, Nome Completo 3
>
> Então o que pensei, pego a primeira referência de cada arquivo, e com um
> sed eu substituo. Se fosse fazer na mão, ficaria algo como:
> # cat grupos.txt | sed 's/usuario/\"Nome Completo\"/'
>
> Isso funciona para cada um, mas se fosse para fazer manualmente não
> estaria fazendo um script ;-)
>
> Com isso resolvi fazer um laço para pegar o conteúdo de cada linha e
> jogar em uma variável para fazer a substituição do arquivo, o que
> começou mais ou menos assim:
>
> #!/bin/bash
> for i in $(cat usuarios.txt | cut -d' ' -f1) ;
> do
> VAR1=$i
> done ;
>
> for j in $(cat usuarios.txt | cut -d\" -f2) ;
> do
> VAR2=$j
> done ;
>
> E foi ai que me enrosquei. Pois, somente com isso, ele irá listar as
> linhas e jogá-las nas variáveis, mas com esse laço for vai ocorrer que
> as variáveis irão armazenar, dessa forma, a ultima ocorrência dos dois
> laços, correto? Então pensei que esses laçoes devam estar dentro de um
> while, talves, checando algo como:
>
> CONT=`cat usuarios.txt | wc`
> while [ $CONT -ge 0 ] ...
>
> E com isso pegar cada linha do cat, para que ele faça algo como, pege a
> VAR1 e compare com a linha do grupo que possua o mesmo nome de usuário e
> substitua por VAR2.
>
> Mas depois disse me enrosquei e fiquei na mão. Talvés existam formas, e
> acredito que sim, muito mais fáceis de fazer isso, mas didaticamente
> falando, poderiam dizer como terminar esse script, e se puderem oferecer
> uma solução amigável além da explicação seria bom para o aprendizado e
> para que da próxima vez eu não tenha que escrever um romance para obter
> ajuda.
>
> Obrigado pela atenção.
>  
>



-- 
César Vianna
---
"Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo
entre a realidade que existe e o sonho, que é a realidade que não existe."
Fernando Pessoa


[As partes desta mensagem que não continham texto foram removidas]



Re: [shell-script] Substituir um Arquivo Com Informação de Outros Dois

2008-08-13 Por tôpico César Vianna
Complementando

IFS="
"
for i in `cat usuarios.txt`
do
 user=`cut -d";" -f1 <<< $i`
 nc=`cut -d";" -f2 <<< $i`
 cat grupos.txt|sed "s/$user/$nc/" > temp.txt
 cat temp.txt >  grupos.txt
 echo
done
rm temp.txt


Obs. Tem um parâmetro do sed que joga a saída no mesmo arquivo de entrada,
mas não recordo agora e na pesquisa rápida que fiz na lista não encontrei.

2008/8/13 César Vianna <[EMAIL PROTECTED]>

> Segue uma sugestão:
>
> Formato do arquivo usuarios.txt
>
> x;Nome Completo
>
>
> Formato do arquivo grupos.txt
>
> grupo:x:y
>
>
> Script para substituição:
>
> 
> IFS="
> "
> for i in `cat usuarios.txt`
> do
>  user=`cut -d";" -f1 <<< $i`
>  nc=`cut -d";" -f2 <<< $i`#nc é o nome completo
>  echo $user - $nc
>  cat grupos.txt|sed "s/$user/$nc/"
> done
> 
>
>
>
>
>
>
> 2008/8/13 Anderson - Listas <[EMAIL PROTECTED]>
>
>   Pessoal, estou precisando de uma ajuda com um pequeno script que estou
>> montando.
>>
>> Não é algo complicado de se fazer, mas algo que com pouco experiência
>> não estou conseguindo.
>>
>> Vamos ao problema:
>>
>> Tenho dois arquivos:
>>
>> grupos.txt, que o conteudo dele é o seguinte:
>> grupo:*:usuario1,usuario2,usuario3 (resultado do comando # getent group
>> > grupos.txt)
>>
>> usuarios.txt, que tem as informações dos usuários (resultado do comando
>> # getent passwd > usuarios.txt)
>>
>> Tratei o usuarios.txt da seguinte forma: # cat usuarios.txt | cut -d:
>> -f1,5 | tr : ' ' para que pegasse apenas o nome de usuário e o nome
>> completo das pessoas, e substituisse os : por espaço, ficando o arquivo
>> com o seguinte formato:
>> usuario Nome Completo do Usuário, o que também tratei e deixei assim:
>> usuario "Nome Completo do Usuário".
>>
>> Agora o que quero fazer:
>>
>> pegar todos os usuários pelo username e substituir pelo nome completo no
>> arquivo grupos.txt, para que, ao invés de ficar vomo está, ele me
>> mostre o nome completo de cada pessoa que faz parte do grupo, ficando
>> assim:
>>
>> Grupo1:*:Nome Completo, Nome Completo 2, Nome Completo 3
>>
>> Então o que pensei, pego a primeira referência de cada arquivo, e com um
>> sed eu substituo. Se fosse fazer na mão, ficaria algo como:
>> # cat grupos.txt | sed 's/usuario/\"Nome Completo\"/'
>>
>> Isso funciona para cada um, mas se fosse para fazer manualmente não
>> estaria fazendo um script ;-)
>>
>> Com isso resolvi fazer um laço para pegar o conteúdo de cada linha e
>> jogar em uma variável para fazer a substituição do arquivo, o que
>> começou mais ou menos assim:
>>
>> #!/bin/bash
>> for i in $(cat usuarios.txt | cut -d' ' -f1) ;
>> do
>> VAR1=$i
>> done ;
>>
>> for j in $(cat usuarios.txt | cut -d\" -f2) ;
>> do
>> VAR2=$j
>> done ;
>>
>> E foi ai que me enrosquei. Pois, somente com isso, ele irá listar as
>> linhas e jogá-las nas variáveis, mas com esse laço for vai ocorrer que
>> as variáveis irão armazenar, dessa forma, a ultima ocorrência dos dois
>> laços, correto? Então pensei que esses laçoes devam estar dentro de um
>> while, talves, checando algo como:
>>
>> CONT=`cat usuarios.txt | wc`
>> while [ $CONT -ge 0 ] ...
>>
>> E com isso pegar cada linha do cat, para que ele faça algo como, pege a
>> VAR1 e compare com a linha do grupo que possua o mesmo nome de usuário e
>> substitua por VAR2.
>>
>> Mas depois disse me enrosquei e fiquei na mão. Talvés existam formas, e
>> acredito que sim, muito mais fáceis de fazer isso, mas didaticamente
>> falando, poderiam dizer como terminar esse script, e se puderem oferecer
>> uma solução amigável além da explicação seria bom para o aprendizado e
>> para que da próxima vez eu não tenha que escrever um romance para obter
>> ajuda.
>>
>> Obrigado pela atenção.
>>  
>>
>
>
>
> --
> César Vianna
> ---
> "Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo
> entre a realidade que existe e o sonho, que é a realidade que não existe."
> Fernando Pessoa
>



-- 
César Vianna
---
"Talvez porque eu pense demais ou sonhe demais, o certo é que não distingo
entre a realidade que existe e o sonho, que é a realidade que não existe."
Fernando Pessoa


[As partes desta mensagem que não continham texto foram removidas]