shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] variavel no sed


From: Julio Neves
Subject: Re: [shell-script] variavel no sed
Date: Mon, 16 Apr 2001 18:01:47 -0300

Não precisa fazer o cut Mauricio, basta vc agregar os dois-pontos à sua 
pesquisa.

if  grep \^$USUARIO: /etc/passwd > /dev/null; then ...
ou fazer a mesma coisa com o sed.

Obs:
Cuidado com o uso das opções -qs do grep. O -q é expecifico do Bash. No sh 
e no ksh a opção -q te devolve erro.

[ ]s,
Julio Cezar Neves



Favor responder a address@hidden
Para:   <address@hidden>
cc: 
Assunto:        Re: [shell-script] variavel no sed

Aurelio e Julio:

 o problema do ultimo grep é que ele pode achar usuarios diferentes do que
eu procuro.
 por exemplo, tenho aqui os usuarios antonio, antonior, antoniop. por isto
o
 | cut -d : -f 1 | grep -x ${USUARIO}
depois do cat /etc/passwd é necessário.

tanto o 'sed "s/^$USUARIO//"' quanto o 'grep -qs' que voces sugeriram
detecta os 3 usuarios enquanto eu posso querer apenas o antonio. (por
exemplo, caso o antonio nao exista mas o antonior e o antoniop, o script
nao deixara incluir).

como faco pra emular o cut -d : -f 1 em sed?

[]'s

Mauricio Vieira - Ciencia da Computacao UFBA
----------------------------------------------------------------------
The connection between the language in which we think/program and the
problems and solutions we can imagine is very close.  For this reason
restricting language features with the intent of eliminating programmer
errors is at best dangerous.
                -- Bjarne Stroustrup


On Thu, 12 Apr 2001, # aurelio marinho jargas wrote:

:olá julio,
:
:vou dar uns pitacos no teu script &:)
:
:@ 11/4, Julio Neves:
:> ATENÇÃO, no momento não disponho do Linux para testar, mas eu faria 
assim:
:>
:> function adiciona
:> {
:> while [ $USUARIO ];do
:>         echo -n "Digite o login do usuario (8 caracteres): "
:>         read USUARIO
:> done;
:> #Tira brancos iniciais e finais e trunca para nao haver problema
:> USUARIO=`echo "$USUARIO" | sed 's/^ *//' | sed 's/ *$//' | cut -c -8`
:
:dica: vc pode separar vários comandos sed por ;
:
:    USUARIO=`echo "$USUARIO" | sed 's/^ *//;s/ *$//' | cut -c -8`
:
:mas neste caso essa "limpa" com o sed é desnecessária, pois o
:bash já faz isso pra você, se referenciar a variável SEM as aspas
:duplas:
:
:[~] A="      blablabla       "
:[~] echo $A
:blablabla
:[~] echo "$A"
:      blablabla
:
:então o trecho acima ficaria simplesmente:
:
:    USUARIO=`echo $USUARIO | cut -c -8`
:
:ops!
:[~] echo $A...
:blablabla ...
:
:ele deixa 1 espaço no final... então:
:
:    USUARIO=`echo ${USUARIO% } | cut -c -8`
:
:
:${VAR% } == a partir do final %, corte um espaço em branco
:
:
:
:> if  sed -n "s/^$USUARIO//" /etc/passwd; then
:
:aqui faltou o p depois do s///, pois a opção -n foi especificada:
:
:  if  sed -n "s/^$USUARIO//p" /etc/passwd; then
:
:
:> # Acho que neste caso o grep é melhor q o sed que que eu quero
:> # somente testar se o usuário existe ou não.
:> # Experimente:
:> if  grep "^$USUARIO" /etc/passwd > /dev/null; then
:
:o grep tem as opções -q e -s aí não precisa do >dev/null e
:2>/dev/null (Quiet, Silent)
:
:  if  grep -qs "^$USUARIO" /etc/passwd; then
:
:
:--
:s·:(·>(·×^a]×http://www.verde666.org×^[:wq



Sair da lista: address@hidden
Banco Dados:   http://www.egroups.com/group/shell-script 

Seu uso do Yahoo! Grupos é sujeito às regras descritas em: 
http://docs.yahoo.com/info/terms/ 








reply via email to

[Prev in Thread] Current Thread [Next in Thread]