![]() |
|
|
google unix.com
|
|||||||
| Fóruns | Registar | Fórum Regimento | Ligações | Álbuns | FAQ | Lista deputados | Calendário | Pesquisa | Today's Posts | Mark Forums Read |
| 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 |
![]() |
|
|
Linkback | Thread Tools | Pesquisar este Thread | Rate Thread | Display Modes |
|
|
|
||||
|
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. |
|
||||
|
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) 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 |
|
||||
|
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. |
![]() |
| Marcadores |
| Thread Tools | Pesquisar este Thread |
| Display Modes | Esta taxa Thread |
|
|