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

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

Re: [shell-script] tr


From: Eliphas Levy Theodoro
Subject: Re: [shell-script] tr
Date: Mon, 16 Oct 2000 16:55:46 -0200 (EST)

# aurelio marinho jargas, @ 16:10:

> @ 16/10, shellbh:

> > to fazendo um programinha em bash que converte a lista de usuarios do licq
> > para o zicq, so que estou com um probleminha
> > em certo momento do programa uma variavel fica assim:
> > licq="123456789 Alias = Ana"
> > gostaria de saber como eu faco para tirar "Alias = " de dentro da variavel
> > para que ela fique assim: 123456789 leoserra

> o tr -d corta apenas 1 caractere.
> ele recebeu uma LISTA de caracteres para apagar: A,l,i,a,s, ,=
> por isso apagou o próprio 'Alias =' e também os 2 As do 'Ana'.

> se você usa bash versão 2, pode cortar o 'Alias = ' assim:
> 
>    licq=${licq/Alias = //}
> 
> senão, use o sed:
> 
>    licq=`echo $licq | sed 's/Alias = //'`
> 
> ou o cut com delimitador:
> 
>    licq=`echo $licq | cut -d' ' -f1,4 
> 
> e tem outras possibilitades com awk, ed, vi, mas acho que uma
> dessas 3 te servirá.

aproveitando, eu fiz há tempos exatamente a mesma coisa,
usando o sed.

você só precisa ter o ~/.zicqrc já criado, pois o script só anexa mais
UINs.


--->
#!/bin/sh
# licq2zicq
# 15/10/1999 - <address@hidden>

cd ~/.licq/conf
for a in [0-9]*; do
    echo -n $a
    grep -i alias $a
done |
sed 's/\([0-9]*\).*= \(.*\)/\1 \2/ ; s/[\t ]/_/g' |
sort -n >> ~/.zicqrc
<---


s/\([0-9]*\).*= \(.*\)/\1 \2/ # pega os números no início e o que tiver
                              # após o '= '
s/[\t ]/_/g                   # substitui espaço e tab por sublinha

esse \t é um TAB literal, você insere ele com ^V + TAB. (o sed 3.02.80 já
entende isso como um tab.)

-- 
eliphas



reply via email to

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