The UNIX and Linux Forums  


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
apagar dois padrões e remover um padrão ppat7046 Programação Shell Script e 7 04-08-2009 10:19
Excluir linhas entre dois padrões sem apagar o segundo padrão Ilja Programação Shell Script e 1 11-14-2008 09:53
Grep Todas as linhas entre os 2 modelos diferentes gurpreet470 Programação Shell Script e 2 11-07-2008 04:45
Como as linhas entre a última ocorrência de dois padrões rvz Programação Shell Script e 8 08-08-2008 06:32
Como chegar em linhas entre padrões? racbern Programação Shell Script e 11 04-23-2008 08:28

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 05-26-2009
shamushamu shamushamu is offline
Usuário
  
 

Join Date: Sep 2008
Lugares: 21
apagar linhas entre os padrões

Oi, eu pesquisados neste fórum durante todo o dia, mas não foi capaz de encontrar códigos suficiente para me ajudar a fazer uma tarefa. O único código que eu posso chegar a este é:

sed '/ [0-9] [0-9] /, / [0-9] [0-9] / (/ / p; d;)' inputfile> outputfile

Gostaria de sed/awk / grep um arquivo de dois padrões e, em seguida, elimine as linhas entre esses padrões. Por favor, consulte a inputfile abaixo. Esta é apenas uma pequena parte de um extenso arquivo. Tudo em negrito deve ser suprimida.

Neste caso, gostaria de pesquisa para o primeiro padrão [0 0 2] eo último padrão [2433 2433 2], em seguida, elimine todas as linhas entre esses padrões, mas mantendo a linha [ANT_2] acima da linha [2433 2433 2] . Do mesmo modo, gostaria de pesquisa para o primeiro padrão [0 0 4] eo último padrão [1 1 2], em seguida, elimine todas as linhas entre esses padrões, mas mantendo a linha [ANT_6] acima da linha [1 1 2]. O número de linhas entre estas pattens pode variar. A única coisa que eu posso ver que é constante é a [0 0].

Qualquer ajuda ou sugestão seria muito apreciado.

inputfile
--------
ANT_1
0 0 2 14 jan. 10:11:44 2009
Regra nome_do_caminho Arquivo: / home / la / _drc_
ply ao portão área ratio> 500
ANT_2
2433 2433 2 jan 14 10:13:46 2009
Regra nome_do_caminho Arquivo: / home / la / _drc_
MT1 ao portão área ratio> 40
p 1 44
-2109300 -10645700
-2095600 -10645700
-2095600 -10649700
-2088500 -10649700
-2088500 -10655700
-2071900 -10655700
ANT_3
0 0 2 14 jan. 10:13:59 2009
Regra nome_do_caminho Arquivo: / home / la / _drc_
mt2 diff portão insumos.
ANT_4
0 0 2 14 jan. 10:14:01 2009
Regra nome_do_caminho Arquivo: / home / la / _drc_
ouro diff portão insumos.

ANT_5
0 0 4 14 jan. 10:14:01 2009
Regra nome_do_caminho Arquivo: / home / la / _drc_
ouro diff portão insumos.
ANT_6
1 1 2 14 jan. 10:14:01 2009
Regra nome_do_caminho Arquivo: / home / la / _drc_
ouro diff portão insumos.
NET_AREA_RATIO_RDBS
0 0 3 14 jan. 10:14:01 2009
ANT2.OUT
ANT3.OUT
ANT4.OUT


Desired outputfile
----------------
ANT_2
2433 2433 2 jan 14 10:13:46 2009
Regra nome_do_caminho Arquivo: / home / la / _drc_
MT1 ao portão área ratio> 40
p 1 44
-2109300 -10645700
-2095600 -10645700
-2095600 -10649700
-2088500 -10649700
-2088500 -10655700
-2071900 -10655700
ANT_6
1 1 2 14 jan. 10:14:01 2009
Regra nome_do_caminho Arquivo: / home / la / _drc_
ouro diff portão insumos.
  #2 (permalink)  
Old 05-26-2009
ghostdog74 ghostdog74 is offline Forum Advisor  
Usuário
  
 

Join Date: Sep 2006
Posts: 2.553
olhar para o "Mais UNIX e Linux Fórum Tópicos Você pode achar Helpful" caixa e ver se há uma solução semelhante para você.
  #3 (permalink)  
Old 05-28-2009
shamushamu shamushamu is offline
Usuário
  
 

Join Date: Sep 2008
Lugares: 21
Ghostdog, Im não tiver certeza de onde o mais Unix / Linux Fórum é porque eu não poderia encontrá-lo neste fórum lista.

Eu era capaz de obter um código a partir deste fórum e aplicá-la para o que estou fazendo. Não é exato, mas é estreita.


código
-----
Código:
#!/bin/bash
function drcext
{
# Extract one line above and two lines below a pattern
awk '/[1-9] [1-9] /{ before-=1;after=2; next }
after { after--;next }
{ store[++before]=$0}
END {
for(i=1;i<=before;i++) {
print store[i]
}
}' b > c
diff b c > d
sed -i 's/[0-9]*,[0-9]*[a-z]*[0-9]*/----------------------------------------------------------------/g' d
sed -i 's/< //g' d
# Add a variable content to the beginning of the file
rulepath=`grep Rule d`
sed -i '/Rule/d' d
sed "1i $rulepath" < d > e
}
drcext

Este é o meu arquivo de entrada:

b inputfile
---------
Código:
die1 1000

WARN_1
0 0 2 May 4 16:20:21 2009 
Rule File Pathname: /coms
Rule File Pathname: /home/la/_tij4_drc_
TEOS_CH minimum spacing to VIA_1 is 10.0u, must not overlap
23_K
1 1 2 May 4 16:24:00 2009 
Rule File Pathname: /home/la/_tij4_drc_
TEOS_CH must be enclosed by Metal_3 10um min
p 1 4
CN tmplt c 1 0 0 1 0 0
-1512633 -8706882
-1507100 -8715212
-1507100 -8668836
-1512633 -8677166

Rule File Pathname: /home/la/_tij4_drc_
SU8_chm to Bond Pad min space is 10 um 
45_D2
20 20 2 May 4 16:30:03 2009 
Rule File Pathname: /home/la/_tij4_drc_
SU8_chm to Bond Pad at the end of a row min space is 100 um
e 1 2
CN die1 c 1 0 0 1 0 0
-1366000 -9000000 -1366000 -8991408
-1461658 -9029146 -1457396 -9031988
e 2 2
-1366000 -9000000 -1366000 -8981773
-1457396 -9031988 -1450898 -9034615
e 3 2
-1366000 -8804227 -1366000 -8800000

Rule File Pathname: /home/la/_tij4_drc_
Primer must be enclosed by SU8_prm
AT_1
2 2 2 May 4 16:30:20 2009 
Rule File Pathname: /home/la/_tij4_drc_
target must be covered by (drawn) dso
p 1 36
CN target_bondalign c 1 0 0 1 -1676600 7170000
-24000 0
-23635 -4168

Rule File Pathname: /home/la/_tij4_drc_
SU8_prm must overlap dso over gld_tgt by 3um min
AT_5
2 2 2 May 4 16:30:20 2009 
Rule File Pathname: /home/la/_tij4_drc_
SU8_prm/chm/nzl not allowed over gld_tgt
p 1 36
CN target_bondalign c 1 0 0 1 -1676600 7170000
-24000 0
-23635 -4168
-22553 -8208
-20785 -12000
-18385 -15427

Rule File Pathname: /home/la/_tij4_drc_
contact not allowed in stitch zone
su8_14_26A
55 55 2 May 4 16:30:30 2009 
Rule File Pathname: /home/la/_tij4_drc_
NOZZLE minimum width is 10um (for 14um thick material)
p 1 114
CN resistor_array c 1 0 0 1 0 0
-1052100 -7525307
-1052067 -7525796
-1052066 -7525803
-1051974 -7526268

Este é o meu arquivo de saída:

outputfile e
-----------
Código:
Rule File Pathname: /home/la/_tij4_drc_
----------------------------------------------------------------
23_K
1 1 2 May 4 16:24:00 2009 
TEOS_CH must be enclosed by Metal_3 10um min
----------------------------------------------------------------
AT_1
2 2 2 May 4 16:30:20 2009 
target must be covered by (drawn) dso
----------------------------------------------------------------
AT_5
2 2 2 May 4 16:30:20 2009 
SU8_prm/chm/nzl not allowed over gld_tgt
----------------------------------------------------------------
su8_14_26A
55 55 2 May 4 16:30:30 2009 
NOZZLE minimum width is 10um (for 14um thick material)
Não tenho certeza por isso que o comando awk apagar as linhas que forem encontradas pelo padrão de pesquisa [1-9] [1-9]. O destacamento inicialmente para este código é de um para extrair a linha acima e duas linhas abaixo do padrão [1-9] [1-9]. Este código é para trás. Elimina em vez de extrair é por isso que eu tenho que usar o diff para obter as linhas que foram apagar. Por favor, deixe-me saber como recodificar para extraí-lo em vez de excluir.

Existe um problema com este código que eu não entendo é que eu use o padrão [1-9] [1-9], pelo que não deve ser extrair a linha:

55 55 2 4 mai 16:30:30 2009

Mas é isso que eu queria. Eu também quero a linha:

20 20 2 4. Maio 16:30:03 2009

Mas ela não chegou extraído. Como faço para alterar o padrão / [1-9] [1-9] /, a fim de que ele irá encontrar qualquer cadeia, ou seja, 55 55 2 ou 20 20 2? Tentei um padrão diferente / [1-9] * [1-9] * / ou alguma coisa nessa linha, mas não é trabalho.

Desculpem a longa mas qualquer pedido aconselhar seria muito apreciado. Este é o meu código:

Última edição por vgersh99; em 05/28/2009 04:01.. Motivo: adicionado código tags
Bits Awarded / Cobrado para shamushamu para este Post
Data Usuário Comentário Valor
05-28-2009 vgersh99 N / A 0
  #4 (permalink)  
Old 05-28-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Join Date: Feb 2005
Localização: Boston, MA
Mensagens: 5.125
Para manter os fóruns de alta qualidade para todos os usuários, por favor, tome o tempo de formatar suas postagens corretamente.

Primeiro de tudo, utilize Código Tags quando você postar qualquer código ou dados amostras para que outros possam facilmente ler o código. Você pode fazer isso facilmente, destacando o seu código e, em seguida, clicar sobre o # na edição menu. (Você também pode digitar código tags [code] e [/ code] pela mão.)

Em segundo lugar, evitar a cor ou diferentes fontes e tamanho da fonte para as suas postagens. Seletiva uso de cores para destacar uma única palavra ou frase pode ser útil às vezes, mas utilizando cores, em geral, torna mais difícil de ler os fóruns, especialmente cores brilhantes como o vermelho.

Em terceiro lugar, deve ter cuidado quando você cortar e colar, editar qualquer personagens ímpares e certifique-se de todos os links estão a funcionar bem.

Obrigado.

O UNIX e Linux Forum
  #5 (permalink)  
Old 05-28-2009
shamushamu shamushamu is offline
Usuário
  
 

Join Date: Sep 2008
Lugares: 21
Desculpe, vgersh99. Eu sou novo para o Linux e este fórum.

Acabei de encontrar e corrigir meus códigos. Mudei o padrão para:

Código:
awk '/^[1-9]/{ before-=1;after=2; next }

Mas eu ainda estou muito interessado em ver se alguém tiver uma solução melhor do que isto. Creio que isto pode ser feito usando algumas linhas.
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 12:54.


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