Filtre as opções de combinação nas linhas

0

Dados

Life by cerebral flow is coming to:---1) Prolonged jumping rate---2) Small holiday course---3) Hello this world---4) Dance rock coffee---5) Therapy unproven---Choose right answer:|1,3,5|2,5|1,2,3,5   5
...
Life by cerebral flow is coming to:---1) Prolonged jumping rate---2) Small holiday course---3) Hello this world---4) Dance rock coffee---5) Therapy unproven---Choose right answer:|1.,3.,5|2,5|1,2.,3,5    5

onde cada linha contém assim [Sentence]:---1)...(options)---n) ---[choose right ansewr]:|options| \tab [correct answer] .

Eu quero encontrar todas as frases que não têm correspondência |[1-5],[1-5]?| OR |[1-5].,[1-5]?| , permitindo também |1.,| e |1,| .

Meu pseudocódigo em Perl

perl -pe '  
                 # read the file a record at a time and auto-print (-p)
    s/[0-5],[0-5]?//;    # remove those lines having the match
    s/[0-5].,[0-5]?//;    # remove those lines having the match
' file

onde o problema é a remoção de linhas inteiras que possuem essas correspondências. Eu posso combinar essas coisas, mas para dizer: remover toda a linha com o jogo é o desafio.

Como pode remover as linhas que têm correspondência?

    
por Léo Léopold Hertz 준영 14.06.2015 / 18:51

1 resposta

1

Use -n em vez de -p :

perl -ne 'print unless /[0-5],[0-5]?|[0-5].,[0-5]?/' file

-n processa a entrada linha por linha, mas não imprime automaticamente cada linha.

Não sei qual é o seu objetivo, portanto, talvez seja necessário ajustar os regexes, mas a abordagem geral deve funcionar.

    
por 14.06.2015 / 19:22