Regex: remover linhas contendo

Eu tenho um longo documento de comandos. Usando o notepad ++ ou regex, eu quero apagar todas as linhas contendo “help”, incluindo keyboard_help etc.

Como isso pode ser feito?

Isso também é possível com o Notepad ++

  • Vá para o menu de busca Ctrl + F e abra a aba "Mark" .
  • Marque "Bookmark line" (se não houver nenhuma atualização da guia "Mark" na versão atual).

  • Digite seu termo de pesquisa e clique em "Mark All"

    • Todas as linhas que contêm o termo de pesquisa são marcadas.
  • Agora vá para o menu "Search -> Bookmark -> Remove Bookmarked lines"

  • Feito.

Outra maneira de fazer isso no Notepad ++ é tudo na checkbox de diálogo Localizar / Substituir e com regex:

  • Ctrl + h para abrir o diálogo de substituição de localização.

  • Na checkbox de texto Find what: inclua seu regex:. .*help.*\r?\n (onde o \r é opcional caso o arquivo não tenha finais de linha do Windows).

  • Deixe a checkbox de texto Replace with: vazia.

  • Certifique-se de que o botão de opção Expressão regular na área do Modo de pesquisa esteja selecionado. Em seguida, clique em Replace All e voila! Todas as linhas que contêm a help seu termo de pesquisa foram removidas.

Linha How-To Substituir em N ++

Tarefa fácil com o grep :

 grep -v help filename 

Append > newFileName para redirect a saída para um novo arquivo.


Atualizar

Para esclarecer, o comportamento normal será imprimir as linhas na canvas. Para canalizá-lo para um arquivo, o > pode ser usado. Assim, neste comando:

 grep -v help filename > newFileName 
  1. grep chama o programa grep , obviamente
  2. -v é um sinalizador para inverter a saída. Por defaulf, o grep imprime as linhas que correspondem ao padrão dado. Com esse sinalizador, ele imprimirá as linhas que não corresponderem ao padrão.
  3. help é o padrão para combinar
  4. filename é o nome do arquivo de input
  5. > redireciona a saída para o item a seguir
  6. newFileName o novo arquivo onde a saída será salva.

Como você pode perceber, você não estará excluindo as coisas no seu arquivo. grep irá lê-lo e outro arquivo será salvo, modificado de acordo.

Você pode fazer isso usando sed: sed '/help/ d' < inputFile > outputFile

Se você estiver no Windows, tente encontrar o findstr , sem ferramentas de terceiros necessárias:

 findstr /V /L "searchstring" inputfile.txt > outputfile.txt 

Ele também suporta o regex! Basta ler a ajuda da ferramenta findstr /?

PS Se você deseja trabalhar com arquivos grandes e enormes (como arquivos de log de 400 MB), um editor de texto não é muito eficiente em termos de memory, portanto, como alguém já apontou, as ferramentas de linha de comando são o caminho a ser seguido. Mas não há grep no windows, então …

Apenas executei isso em um arquivo de log de 1 GB e ele literalmente levou 3 segundos.

Pesquise com expressão regular:

^.*(help).*$