[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Localizar texto em arquivo
From: |
Aurelio Marinho Jargas |
Subject: |
Re: [shell-script] Localizar texto em arquivo |
Date: |
Thu, 25 Nov 2004 13:54:35 -0300 (ART) |
oi fábio,
--- Fábio Batista <address@hidden> escreveu:
> [fabio@elefante testes]$ cat passwd.txt
> adriano:x:1417:100:Adriano Silva - USINET:/home/adriano:/bin/bash
> marcos:x:1418:100:Marcos Antônio - USINET:/home/marcos:/bin/bash
>
> [fabio@elefante testes]$ cat passwd_clientes.txt
> Adriano Silva
> Marcos Antônio
> José Geraldo Magela
>
> [fabio@elefante testes]$ cat passwd_clientes.txt | sed -r
> 's|(.*)|s/^([^:]+):([^:]*:){3}\1 - USINET:.*$/\1 - \\address@hidden/|'
> | sed -rf- passwd.txt
> Adriano Silva - address@hidden
> Marcos Antônio - address@hidden
nooooooooooooossa, que violência! :)
mandou bem pacas, fazendo um sed que gera um script para o
segundo sed interpretar. para cada nome da lista, ele
monta o s/// responsável por transformá-lo no formato novo.
não tentem isso sem o acompanhamento de um adulto pessoal,
é magia negra ;)
pensei numa tática diferente:
$ cat passwd.txt |
sed -r 's/^([^:]+):x[0-9:]+:([A-Z][^-]*)-.*/\2- \address@hidden/' |
grep -f passwd_clientes.txt
Adriano Silva - address@hidden
Marcos Antônio - address@hidden
$
aqui ele aplica a transformação do formato para todas as
linhas do passwd, e depois o grep -f se encarrega de
deixar somente as linhas com os nomes desejados.
de qualquer forma ficou cabuloso. o mais fácil de entender
e manter é fazer um loop mesmo, usando o set - para
separar os campos do passwd em variáveis e manipulá-las.
um awk com um printf "%s - %address@hidden\n", $5, $1
ou coisa do tipo também pode ajudar.
falou!
=====
--
Aurelio Marinho Jargas, Curitiba, Conectiva
Funcoes ZZ v4.1111 http://aurelio.net/zz
txt2tags v2.1 http://txt2tags.sf.net/pt
_______________________________________________________
Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora!
http://br.acesso.yahoo.com/