Remover linhas contendo apenas uma palavra e um número? (notepad ++, regex)

1

Eu tenho várias centenas de arquivos .txt dos quais eu gostaria de remover as linhas onde apenas a palavra "Volume" seguido por um número aparece.  A palavra "Volume" pode aparecer várias vezes em cada arquivo de texto, mas eu só quero excluir as linhas em que o único texto nessa linha é Volume e algum número.

Exemplo de linha que eu quero excluir:

                 Volume 158

Exemplo de linha que não quero excluir:

  text text text Volume 158 text text text

Por favor me ajude a conseguir isso usando o notepad ++?

    
por user3435135 21.03.2015 / 17:01

2 respostas

0

O que você está tentando fazer é envolver uma lógica complexa que não será possível, mesmo em um editor de texto avançado como o Notepad ++. Além disso, seu problema não é definido com precisão (por exemplo, "12.3" é um número ou não?). Só você conhece suas necessidades exatas.

Dependendo de como você é técnico, você pode adaptar o seguinte código C # para fazer exatamente o que deseja. Você precisará do Visual Studio Express ou similar. É claro que você pode escrever isso em outro idioma ou tentar encontrar uma solução alternativa. Observe que o código excluirá as linhas iniciando com "Volume", mesmo que o texto a seguir não seja um número. Você precisará lidar exatamente com o processamento que deseja. Além disso, o código lida com arquivos especificamente por nome. Se você quiser reciclar todos os arquivos em uma pasta, digamos, esse é outro detalhe que talvez seja necessário considerar:

// Read the file line by line
string szOriginal = @"C:\Tmp\Test.txt";
string szCopy = @"C:\Tmp\Test.txt.tmp";
StreamReader fText = new StreamReader(szOriginal);
StreamWriter fCopy = new StreamWriter(szCopy);

string szLine = string.Empty;
int nIndex = 0;
while ((szLine = fText.ReadLine()) != null)
{
    // Don't copy lines starting with "Volume " (note space character)
    nIndex = szLine.IndexOf("Volume ");
    if (nIndex != 0)
        fCopy.WriteLine(szLine);
}

fText.Close();
fCopy.Close();

// Delete original and rename copy
File.Delete(szOriginal);
File.Move(szCopy, szOriginal);

Crie um projeto vazio do Windows Forms, adicione um botão, clique duas vezes no botão (para visualizar o código no editor), cole o código acima (com quaisquer modificações, se necessário), execute o código e clique no botão . Boa sorte!

    
por 21.03.2015 / 17:32
0

Usando a expressão regular:

^\s*Volume \d+\s*$

você deve conseguir fazê-lo facilmente substituindo por branco, por exemplo

    
por 25.03.2015 / 16:15