Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org Fóruns > Linguagens de Programação > Programação > shell script
Wiki Classificados Reviews Jogos Grupos Sociais RSS Feeds FAQ Termos de Uso Contato Sobre
Registrar Fotos Membros Calendário Pesquisar Postados Hoje Marcar Fóruns Como Lidos

sed + variaveis



Quer ver menos banners de publicidade ? Entao Cadastre-se!

Tópico Trancado
 
LinkBack Ferramentas do Tópico
Antigo 07-07-2008, 17:08   #1 (permalink)
Padrão sed + variaveis

Caros,

Estou com um probleminha ao usar o "sed" em meu script, ao tentar passar variavel em um laço ele somente remove da lista a ultima variavel o comando no fim do laço. segue o codigo

Código:
array=( ${array[*]} `ls -1 *.loc` )


 for palavra in ${array[@]}; do

          sed  "/$palavra/d" lista_loc.txt;

done
Poderiam me dar uma ajuda?

Grato
 
Avatar de diogoborsoi
 
Registrado em: Sep 2002
Posts: 131
Agradeceu: 3
Agradecido 0 vez(es) em 0 Posts
Reputação: 0 diogoborsoi
diogoborsoi está offline  
Antigo 08-07-2008, 10:08   #2 (permalink)
Padrão

Você está querendo remover a palavra definitivamente do arquivo lista_loc.txt?

Se você executar o seu script usando bash -x script.sh poderá ver que ele remove todas as ocorrências do array, mas uma por vez. Se você quiser alterar o arquivo lista_loc.txt e remover as ocorrências a medida que elas aparecerem, você tem que usar sed -i "/$palavra/d" lista_loc.txt, assim ele vai alterar o arquivo removendo a palavra de dentro dele.

Se não for isso que você quer, poste aqui um exemplo do que você está querendo que eu te ajudo melhor.
__________________
Frederico Freire Boaventura (Galahad)
LPIC-II | MCP

A resposta ajudou? Agradeça!

"Linux poses a real challenge for those with a taste for late-night hacking (and/or conversations with God)."
(By Matt Welsh)
Super Moderador
 
Avatar de galahad
 
Registrado em: Jun 2008
Localização: Espírito Santo
Distribuição: Gentoo
Posts: 250
Agradeceu: 10
Agradecido 50 vez(es) em 48 Posts
Reputação: 42 galahad galahad
galahad está offline  
Antigo 08-07-2008, 10:45   #3 (permalink)
Padrão

Citação:
Postado Originalmente por galahad Ver Post
Você está querendo remover a palavra definitivamente do arquivo lista_loc.txt?

Se você executar o seu script usando bash -x script.sh poderá ver que ele remove todas as ocorrências do array, mas uma por vez. Se você quiser alterar o arquivo lista_loc.txt e remover as ocorrências a medida que elas aparecerem, você tem que usar sed -i "/$palavra/d" lista_loc.txt, assim ele vai alterar o arquivo removendo a palavra de dentro dele.

Se não for isso que você quer, poste aqui um exemplo do que você está querendo que eu te ajudo melhor.

galahad,
Muito obrigado pela sua dica, na verdade o comando remove a linha onde encontra a palavra, a sua dica funcionou, apenas preciso que o arquivo original se mantenha, teria como eu fazer isso sem comandos terceiros (cp lista_loc.txt lista_clean.txt)? Usando o comando abaixo ele nao direcionou a saida para lista_clean.txt.

Código:
sed -i  "/$palavra/d" lista_loc.txt > lista_clean.txt

Obrigado!
 
Avatar de diogoborsoi
 
Registrado em: Sep 2002
Posts: 131
Agradeceu: 3
Agradecido 0 vez(es) em 0 Posts
Reputação: 0 diogoborsoi
diogoborsoi está offline  
Antigo 08-07-2008, 11:35   #4 (permalink)
Padrão

você pode tentar usar:

sed -e "/$palavra/d" lista_loc.txt >> lista_clean.txt
Acho que resolve seu problema
__________________
Frederico Freire Boaventura (Galahad)
LPIC-II | MCP

A resposta ajudou? Agradeça!

"Linux poses a real challenge for those with a taste for late-night hacking (and/or conversations with God)."
(By Matt Welsh)
Super Moderador
 
Avatar de galahad
 
Registrado em: Jun 2008
Localização: Espírito Santo
Distribuição: Gentoo
Posts: 250
Agradeceu: 10
Agradecido 50 vez(es) em 48 Posts
Reputação: 42 galahad galahad
galahad está offline  
Os seguintes usuarios agradeceram galahad por este post:
diogoborsoi (08-07-2008)
Antigo 08-07-2008, 12:08   #5 (permalink)
Padrão

Citação:
Postado Originalmente por galahad Ver Post
você pode tentar usar:

sed -e "/$palavra/d" lista_loc.txt >> lista_clean.txt
Acho que resolve seu problema

galahad, mais uma vez agradeço pela sua ajuda, ja havia tentado assim e nao funcionou como esperado, mas usando sua dica anterior funcionou perfeitamente, adicionei um "cp" no script e ficou tudo certo.

Obrigado!
 
Avatar de diogoborsoi
 
Registrado em: Sep 2002
Posts: 131
Agradeceu: 3
Agradecido 0 vez(es) em 0 Posts
Reputação: 0 diogoborsoi
diogoborsoi está offline  
Tópico Trancado

Tags
sed, shell script

Ferramentas do Tópico

Regras para Posts
Você não pode postar novos tópicos
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar seus posts

Código [IMG] Sim
Código HTML Não
Trackbacks are Sim
Pingbacks are Sim
Refbacks are Sim

Ir para...

Tópicos Similares
Tópico Tópico Iniciado Por Fórum Respostas Última Mensagem
Variaveis de Ambiente ngl Adm. em Geral 0 22-07-2005 03:40
variaveis nao tao variaveis assim Jaime_lsp Iniciantes 13 16-03-2005 17:28
PHP 4.3.1 não passa as variáveis Programação 6 08-06-2003 15:45
PHP 4.3.1 não passa variáveis Adm. em Geral 5 02-06-2003 16:13
Variaveis do Samba!! Anticristh Proxy/NAT/Firewall 1 30-01-2003 18:30

Horários baseados na GMT -3. Agora são 18:03.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.