The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Sed Gama Emissão Wrathe Programação Shell Script e 2 06-17-2008 04:54
nawk-how contar o número de ocorrências de um padrão, quando não conhecemos o padrão cyber111 Programação Shell Script e 2 05-11-2008 04:00
SED padrão de pesquisa e Substituir com o Padrão racbern Programação Shell Script e 4 03-15-2008 05:59
Padrão pesquisar arquivos padrão em c murthybptl Programação Shell Script e 6 11-17-2007 09:15
Procurar arquivo para o padrão e agarrar algumas linhas antes padrão frustrated1 Programação Shell Script e 2 12-22-2005 03:41

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 02-26-2008
afundou sank is offline
Usuário
  
 

Join Date: Feb 2008
Lugares: 24
Ajuda necessária em sed gama padrão

Oi tudo,

Estou usando sed para extrair as linhas que ocorre entre os 2 padrões usando o seguinte comando:

sed -n '/ pattern1 /, / pattern2 /' filename

O comando acima não tem nenhum problema e funciona perfeitamente. Mas eu estava me perguntando se existe uma maneira de sair sed se tiver extraído o intervalo de pelo menos uma vez? Isto é necessário porque o arquivo vai ter apenas uma ocorrência do referido intervalo padrão e também o ficheiro de entrada em que sed opera é grande.

thanks in advance.
naufragou.
  #2 (permalink)  
Old 02-26-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programador, autor
  
 

Join Date: Mar 2007
Localização: Toronto, Canadá
Posts: 2.361
Citação:
Originally Posted by afundou View Post
Oi tudo,

Estou usando sed para extrair as linhas que ocorre entre os 2 padrões usando o seguinte comando:

sed -n '/ pattern1 /, / pattern2 /' filename

O comando acima não tem nenhum problema e funciona perfeitamente. Mas eu estava me perguntando se existe uma maneira de sair sed se tiver extraído o intervalo de pelo menos uma vez? Isto é necessário porque o arquivo vai ter apenas uma ocorrência do referido intervalo padrão e também o ficheiro de entrada em que sed opera é grande.

Código:
sed -n -e '/pattern1/,/pattern2/' -e '/pattern2/q' filename
  #3 (permalink)  
Old 02-27-2008
afundou sank is offline
Usuário
  
 

Join Date: Feb 2008
Lugares: 24
Oi,

obrigado pela resposta. Ela funciona bem quando pattern1 e pattern2 são totalmente diferentes. Em alguns casos, pattern2 será uma parte da pattern1 e, neste caso, ele irá imprimir apenas o pattern1 e saídas. como podemos evitar isso?

Além disso, pode ocorrer pattern2 (várias vezes) antes pattern1 si mesma, uma vez que pode emparelhar-se com outros padrões de modo a formar uma gama diferente. assim, como podemos modificar o comando para que o "-e '/ pattern2 / q'" parte só é eficaz se a pesquisa está no intervalo?

thanks again,
naufragou.
  #4 (permalink)  
Old 02-27-2008
Klashxx's Avatar
Klashxx Klashxx is offline Forum Advisor  
HP-UX/Linux/Oracle
  
 

Join Date: Feb 2006
Localização: Almería, Espanha
Posts: 393
Experimente:
Código:
awk '/pattern2/&&f{exit}f;/pattern1/{f++}' file

Última edição por Klashxx; em 02/27/2008 06:06..
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 09:47.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0