Regex remove linha contém caractere

0

Eu tenho uma lista de valores sendo retornados para mim e todos terminam com | como abaixo:

testdata1-old |
testdata |
test2-old|

Eu quero excluir todas as linhas contendo -old. Que regex posso usar?

    
por user3738022 06.07.2015 / 20:52

2 respostas

3

Acho que você tem um mal-entendido sobre expressões regulares. Fundamentalmente, eles respondem à pergunta "esse texto se parece com esse padrão em particular?" Existem muitas ferramentas que usam expressões regulares para manipular texto, como sed ou grep , e acho que você está confundindo as duas.

O que você precisa fazer é formar uma expressão regular que corresponda ao texto que você deseja filtrar. Por exemplo, a expressão que você está procurando é ^.*-old\|$ e filtra as linhas usando algo assim.

foreach line in input_file
    if regex.matches(line, "^.*-old\|$") then
        continue
    else
        print line
    
por 06.07.2015 / 21:29
0

O que você precisa é

grep -v -E '^.*-old\|$' input_file > output_file

ou o que deve funcionar da mesma forma:

egrep -v '^.*-old\|$' input_file > output_file

Agora, a parte difícil é encontrar uma versão do windows de grep ou egrep que seja executada a partir do cmd.exe ou do Powershell.

    
por 06.07.2015 / 23:47

Tags