[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
variavel no sed
From: |
Mauricio Vieira |
Subject: |
variavel no sed |
Date: |
Tue, 10 Apr 2001 18:59:40 -0300 (BRT) |
Como faco para 'escapar' a variavel dentro de um bloco sed?
sei que poderia usar cut e grep, mas quero usar o sed.
### ...
function adiciona
{
while [ -z $USUARIO ];do
echo -n "Digite o login do usuario (8 caracteres): "
read USUARIO
done;
#Trunca para nao haver problema
USUARIO=`echo "${USUARIO}" | cut -c -8`
EXISTENTE=` sed -n 's/\(\${USUARIO}\).*/\1/p' /etc/passwd `;
echo $EXISTENTE;
if ! [ -z ${EXISTENTE} ]; then
echo "Este login ja esta sendo usado, favor verificar"
exit 1;
else
echo $EXISTENTE;
fi
exit 2;
### ...
$EXISTENTE nao retorna nada. tentei $USUARIO mas tbm nao consegui(ele
interpreta o $ como final de linha e a string USUARIO como a palavra da
regexp). mas se coloco o nome do usuario diretamente no bloco (por exemplo
EXISTENTE=` sed -n 's/\(mvieira\).*/\1/p' /etc/passwd `;) funciona.
obrigado por qualquer ajuda.
[]'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 Tue, 10 Apr 2001, # aurelio marinho jargas wrote:
:olá juari,
:
:@ 19/4, Juari Ritter Mueller:
:
:> Para arquivos no diretório corrente:
:> for i in *; do mv "$i" "$(echo "$i"|tr [A-Z] [a-z])"; done
:>
:> Para arquivos cobrindo toda uma árvore de diretórios:
:> i="blah"
:> find . |
:> while [ -n "$i" ]; do
:> read i
:> mv "$i" "$(echo "$i"|tr [A-Z] [a-z])"
:> done
:> PS: NAO TESTADO
:
:ao invés de fazer o find|while, você pode usar a mesma estrutura
:do primeiro e apenas trocar o * pelo find . usando uma subshell:
:
:for i in `find . -type f` ; do mv "$i" "`echo $i|tr A-Z a-z`"; done
:
:
:
:* note que a sintaxe do tr é A-Z e a-z, SEM os colchetes.
: os colchetes são meros caracteres normais, e fazendo [A-Z] e [a-z]
: você troca [ por [ e ] por ] &:)
:
:
:do man tr:
:
: Faixas. A notação `m-n' expande para todos os caracteres de m a
: n, em ordem ascen dente. m deve ser menos que n; caso
: contrário ocorrerá um erro. Por exemplo `0-9' é o mesmo que
: `0123456789'. Ainda que tr não suporta a sintaxe do System V
: que usa colchetes para delimitar faixas, a alteração
: especificada neste formato funcionará como se os colchetes em
: expr1 correspondessem a colchetes idênticos em expr2.
:
:
:--
: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/
:
:
- variavel no sed,
Mauricio Vieira <=