Respostas:
Existe uma maneira fácil de conseguir isso. Você precisa executar 3 etapas.
Vá para o menu Pesquisar> Localizar ...> Selecione a guia "Marcar". Ative expressões regulares. Procure ^<Path>
( ^
é para o início da linha). Não se esqueça de marcar "Linhas do marcador" e pressionar "Marcar tudo"
==> Todas as linhas que você deseja manter têm um marcador
Vá para o menu "Pesquisar - Favorito - Favorito inverso"
==> Todas as linhas que você deseja excluir estão marcadas.
Vá para o menu "Pesquisar - Favorito - Remover linhas marcadas"
==> Todas as linhas marcadas são excluídas.
Na verdade, isso pode ser feito em duas etapas a partir da versão 6.3. Eu acho que isso pode ser feito antes disso, como eu tinha 5,9 quando tentei pela primeira vez.
Usando a publicação de stema como base desta resposta. Há um passo a menos agora. Marque linhas e remova linhas não marcadas. Feito. Seguem instruções detalhadas.
Menu de pesquisa "Localizar". Na caixa de diálogo Localizar, clique na guia "Marcar". Ative expressões regulares. Procure ^<Path>
( ^
é para o início da linha). Não se esqueça de marcar "Linhas do marcador" e pressionar "Marcar tudo"
==> Todas as linhas que você deseja manter agora têm um marcador
Menu Pesquisa -> Favorito -> Remover linhas não marcadas.
==> Todas as linhas não marcadas como marcadas são excluídas.
^
termo no meu termo de pesquisa nem usar expressões regulares. Espero que isso ajude alguém.
regex substituir
(?!^.*test.*$)^.+
substitua teste pelo texto solicitado
substituir
[\r\n]{2,}
com \r\n
Use ^(?!<Path>).*\r\n
para substituir correspondências por uma sequência vazia. Versão generalizada seria ^(?!.*?test).*\r\n
. Isso não removerá a linha vazia no final do arquivo. Todas as outras linhas são removidas, incluindo várias linhas vazias consecutivas.
(?!)
é um olhar negativo. ^.*test.*$
seleciona a linha inteira que contém o texto solicitado.
[\r\n]{2,}
corresponde a qualquer um \r\n
que ocorra mais que uma vez que esta seja a nova linha do Windows. se você possui Linux ou outro sistema operacional, pode ser necessário mexer com isso. o segundo é substituí-lo por uma linha de retorno.
\r\n
EOL mencionada na postagem é o que o Windows usa e, portanto, pode ou não ser o que você está procurando. Geralmente, em ambientes Linux, é apenas \n
, ou apenas em ambientes Mac \r
; portanto, se você extrair um arquivo de qualquer um deles, não será a EOL no estilo Windows. No entanto, se você fizer o download via gatilhos do modo FileZilla e ASCII, ele poderá ser alterado novamente no Windows EOL (como \n
em \r\n
). Portanto, se o regex não estiver funcionando, verifique o estilo EOL, indo em "Exibir> Mostrar Símbolos> Mostrar Fim da Linha". CR = \r
. LF = \n
.
Parece-me que a maneira mais fácil é usar o recurso "Localizar tudo no documento atual" e copiar os resultados em um novo arquivo ou selecionar todos e substituir o atual.
Isso encontrará todas as linhas que contêm seu texto e as listará na parte inferior. Basta clicar com o botão direito do mouse no resultado da pesquisa e copiar / colar.
\tLine [\d]*:
. Ainda é uma ótima resposta.
Vá para o menu Pesquisar -> Localizar ... -> Ativar expressões regulares. Procure por "^ Path " (^ é para o início da linha).
Clique no botão "Localizar tudo no documento atual".
A janela "Resultado da pesquisa" aparecerá com todas as linhas do padrão. Selecione copiar / colá-los em uma nova guia no Notepad ++.
Nesta nova guia, acesse: menu Pesquisar -> Substituir ... -> Ativar expressões regulares.
No campo "Localizar o que:", use o padrão: "Linha \ d +:". Deixe o campo "Substituir por:" em branco.
Clique no botão "Substituir tudo".
Desde que você realmente deseje corresponder <Path>
e não um caminho do sistema de arquivos, você pode tentar isso em uma linha de comando usando o Perl:
perl -pe " if ($_ !~ /<Path>/) { s/$_// } " < in.txt > out.txt
Ele funcionou com o Strawberry Perl no Windows, portanto, ajuste de acordo se os resultados não forem os esperados.
É desajeitado, mas copie tudo para o Excel e use =IF(LEFT(A1,6)="<Path>",A1,"")
e copie essa fórmula até o fim. Em seguida, copie isso de volta para o Notepad ++. Não é o ideal, mas é bem fácil (se você tiver o Excel). Aviso: Não funcionará bem com linhas recuadas (o Excel mudará as colunas etc.).
Não há uma maneira fácil de fazer o que você quer com o Notepad ++. Você precisará baixar um programa para o seu computador ou criar um script em VB (presumo que você esteja no Windows).
Você pode fazer o que quiser de duas maneiras com o sed. O utilitário sed é o favorito no * nix e pode ser encontrado no Windows entre as grandes pessoas do GnuWin ( http://gnuwin32.sourceforge.net/packages/sed.htm ). Você faria o download deste programa e executaria seu comando no prompt de comando.
Exclua todas as linhas que não contêm:
sed -i '/^<PATH>/!d' file
Imprima todas as linhas que contêm para um novo arquivo:
sed -n '/^<PATH>/p' file > newfile
Eu sugiro que você use imprimir as linhas que deseja para um novo arquivo. A razão para isso é que você provavelmente não receberá a instrução regex pela primeira vez. O utilitário sed usa a sintaxe básica da expressão regular (consulte a referência em http://www.regular-expressions.info/reference.html ). Se for algo como um caminho * nix (/ var / www), você precisará escapar do caractere / para que seu regex funcione.
Exemplo: sed -n '/^\/var\/www/p' file > newfile
Isso imprimirá todas as linhas que começam com '/ var / www'. Se eu arquivasse para escapar do caractere /, o comando geraria um erro. Você pode escapar de um caractere especial (como /) com o caractere de barra invertida \.
Use Pesquisar-> Substituir e insira uma expressão regular como ^[^ ].*
e substitua todos por uma sequência vazia usando Regular expression
. O próximo passo é encontrar linhas vazias procurando \n\n
substituir \n
usando Extended
várias vezes até 0 occurrences were found.
(usar \r\n\r\n
e \r\n
dependendo do formato do arquivo). Se você tiver muitas linhas vazias em uma linha, é mais rápido usar \n\n\n\n\n\n\n
ou ainda mais \n
: s na sequência de pesquisa.