Questão Inverter ou inverter a ordem da linha no Notepad ++


Eu quero virar ordens de linha de um documento com mais de 500 linhas. As linhas não são apenas números, algumas incluem texto e outros caracteres. É uma mistura.

Exemplo:

Linha 1
Linha 2
Linha 3
Linha 4
Linha 5
Linha 6

O que eu quero então inverter e parecer com isso de baixo para cima:

Linha 6
Linha 5
Linha 4
Linha 3
Linha 2
Linha 1

82


origem


Significa que você deseja que os números na margem esquerda sejam contados ou que o conteúdo real do seu arquivo seja revertido? - Maxpm
@Maxpm Conteúdo real do arquivo a ser revertido. - Danpe
possível duplicata de Ordem de linha reversa no Notepad ++ - Franck Dernoncourt


Respostas:


Solução que não requer outro software, exceto o plug-in TextFX incluído normalmente:

  1. Editar> Selecionar todos
  2. TextFX> Ferramentas TextFX> Inserir números de linha
  3. Se TextFX> TextFX Tools> + Sort ascending estiver marcado, desmarque-o
  4. TextFX> TextFX Tools> Ordenar linhas sensíveis a maiúsculas e minúsculas (na coluna)
  5. TextFX> Ferramentas TextFX> Excluir números de linha ou primeira palavra

88



Se TextFX não for encontrado, vá para: Plugins »Plugin Manager» Mostrar gerenciador de plugins »Verifique" Caracteres TextFX ", Clique em Instalar. Veja aqui: textfx.no-ip.com/textfx - Kalpesh Panchal
-o que funcionou foi "Separar linhas insensíveis a maiúsculas e minúsculas" na parte 4) - Theta30
@ Theta30: Acho que o texto da interface do usuário mudou desde a versão que eu usei. - Gnubie
Para aqueles que usam o Eclipse, consulte esta resposta para fazer isso ainda mais simples. (Eu sei que a pergunta original pedia para o Notepad ++, mas achei que valeria a pena adicionar para aqueles que estão tropeçando nisso). - Steve Chambers
@SteveChambers more simply é um eufemismo. Você pode destacar as linhas desejadas e invertê-las com apenas dois cliques do mouse. Muito obrigado por apontar isso Steve, isso facilitou minha vida hoje. - b1nary.atr0phy


Isso também pode ser feito no Notepad ++ sem o plugin TextFX. Segue a mesma estratégia da resposta aceita, mas usando a funcionalidade nativa. Isso é feito da seguinte maneira:

  1. Editar> Selecionar todos
  2. Editar> Editor de Colunas ...> Selecionar Número para Inserir> Definir número inicial para 1> Definir Aumentar por para 1> Verificar zeros à esquerda> Clique em OK

enter image description here

  1. Editar> Operações de Linha> Ordenar Linhas em Ordem Descendente Editar: Uma atualização recente adicionou opções extras de classificação, a opção: Linhas de Classificação Lexicograficamente Descendentes parece fazer o trabalho.

enter image description here

  1. Remover números de linha através de qualquer seleção de caixa (Alt + clique esquerdo arrastar ou Alt + Shift Select) ou Pesquisar / substituir

enter image description here


19



Funciona, mas há duas coisas a ter em mente: 1- Insere um número extra para a última linha (vazia), então você precisa deletá-lo antes de ordenar. 2- Se a sua lista começa com números você pode mexer os números inseridos com seus números, porque não insere um espaço após os números inseridos, então você deve ter cuidado neste caso. - Francisco Alvarado
Não é possível reproduzir a etapa 3. A nova versão mudou o textoe qualquer que seja a opção não funciona para mim - Ooker
@ Ooker eu atualizei o passo 3. Deixe-me saber se isso funciona. - Trevor Young
@TrevorYoung - Você está reclamando de uma imagem que foi adicionada por outra do utilizador.  Acabei de corrigir a formatação da resposta e aprovar a edição. Se você achar a imagem inútil, então remova-a, você é o autor da resposta. A adição da imagem é uma edição aceitável (ou seja, a resposta é melhor com a imagem do que sem ela) - Ramhound
@Ramhound Minhas desculpas. Olhando para o histórico de edições, achei que você havia adicionado a imagem, mas esse não é o caso. Eu não tenho nenhum problema com a imagem estar lá, mas estava tentando dar uma sugestão para a pessoa que adicionou que poderia ser melhor se a sugestão dada fosse feita em vez disso. - Trevor Young


Bem, já que estamos dando exemplos de código, Se você está no Windows 7 ou instalou o Powershell em outra versão do Windows, então:

$foo = New-Object System.collections.arraylist;
$foo.AddRange($(Get-Content 'C:\Path\To\File.txt));
$foo.Reverse();
$foo | Out-File C:\Path\To\File.txt

Ou para uma resposta não codificadora, faça o download GVim, abra o arquivo e digite:

:g/^/m0

6



Eu estou no Windows 7, onde eu colo esse código? isso é realmente intresting. - Danpe
Abra o menu iniciar e apenas digite Powershell. Clique duas vezes em "Windows Powershell". Ele irá abrir um prompt de comando. Corra lá. Há também e IDE (embora eles chamam de ISE - Integrated Script Editor), mas eu faço a maior parte do meu trabalho no prompt de comando e eu uso o GVim para edição de scripts. - EBGreen


Se você estiver confortável em compilar o C ++, isso deve funcionar. Basicamente, eu coloco cada linha do arquivo em um vetor, e imprimo em um novo arquivo usando um iterador reverso.

#include <iostream>
#include <fstream>
#include <string>
#include <vector>

int main()
{
    std::vector<std::string> fileLines;
    std::string              currLine;
    std::ifstream            inFile("input.txt");
    if (inFile.is_open())
    {
        while (inFile.good())
        {
            std::getline(inFile, currLine);
            fileLines.push_back(currLine);
        }
        inFile.close();
    }
    else
    {
        std::cout << "Error - could not open input file!\n";
        return 1;
    }

    std::ofstream outFile("output.txt");
    if (outFile.is_open())
    {
        std::vector<std::string>::reverse_iterator rIt;
        for (rIt = fileLines.rbegin(); rIt < fileLines.rend(); rIt++)
        {
            outFile << *rIt;
        }
        outFile.close();
    }
    else
    {
        std::cout << "Error - could not open output file!\n";
        return 1;
    }
    return 0;
}

Se o arquivo de saída estiver faltando quebra de linha entre as linhas, altere outFile << *rIt; ser estar outFile << *rIt << "\r\n"; então uma quebra de linha é adicionada (omitir o \r se você estiver no Unix / Linux).

Disclaimer: Eu não testei este código (escrevi bem rápido no Bloco de Notas), mas parece viável.


5



Obrigado cara :) mas eu já usei o meu código, mas isso pode ser muito útil para os outros. Btw talvez eu escrevi um plugin Notepad ++ para isso. que langauge eles usam em plugins do notepad ++? - Danpe
@Danpe A maioria dos plugins do Notepad ++ são escritos em C ++, mas tecnicamente podem ser estendidos para qualquer outra linguagem capaz de compilar um .DLL (e com as ligações apropriadas da API). - Breakthrough
Então eu acho que você acabou de criar um plugin :) - Danpe


Use a ferramenta on-line disponível que faz isso em um clique

http://www.miniwebtool.com/reverse-lines/


4





Você pode fazer isso online no site http://textmechanic.co/Sort-Text-Lines.html


2



O site está quebrado, parece que ele mudou para textmechanic.co/Sort-Text-Lines.html - Shogo Makishima
@georgechalhoub Obrigado, atualizei a resposta. - Franck Dernoncourt


aqui é um código c # .net para isso eu só escrevi :)

class Program
{
    static void Main(string[] args)
    {
        try
        {
            String line;
            Stack<String> lines = new Stack<string>();
            // Create an instance of StreamReader to read from a file.
            // The using statement also closes the StreamReader.
            using (StreamReader sr = new StreamReader("test.txt"))
            {
                // Read and display lines from the file until the end of
                // the file is reached.
                while ((line = sr.ReadLine()) != null)
                    lines.Push(line);
            }
            // create a writer and open the file
            TextWriter tw = new StreamWriter("test2.txt");
            // write a line of text to the file
            while (lines.Count > 0)
                tw.WriteLine(lines.Pop());
            // close the stream
            tw.Close();
        }
        catch (Exception e)
        {
            // Let the user know what went wrong.
            Console.WriteLine("The file could not be read/written:");
            Console.WriteLine(e.Message);
        }
    }
}

1



Por que você precisa do unsafe palavra-chave em Main Aqui? - Breakthrough
@Break Eu não sei como chegou lá: O lol fixo. - Danpe
Como podemos integrar isso no notepad ++? - Teoman shipahi


Aqui está uma maneira não codificadora:

  1. Baixe / instale o teste gratuito do TextPad
  2. Abra um programa de planilha eletrônica (ou seja, Excel) e crie os números de 1000 a 1500 na coluna "A" colocando um "1000" na célula A1, colocando A1 + 1 na célula A2 e copie-o para A500.
  3. Abra seu arquivo de texto no TextPad
  4. Mude para "modo de bloqueio" no TextPad
  5. Cole a coluna A da planilha no TextPad (tudo terminará na margem esquerda devido ao modo de bloqueio)
  6. Use o recurso de classificação do TextPad, descendente
  7. Use o modo de bloco de TextBox delete para se livrar dos números

0



Se você for usar o Excel mesmo assim, copie o conteúdo do arquivo de qualquer editor, cole no Excel. Preencha a próxima coluna com uma série de números. Selecione as duas colunas e classifique em ordem decrescente na coluna numérica. Copie a coluna de texto e cole novamente no editor. - EBGreen
@ EBGreen, você está correto. Eu sou um idiota. Você só precisa ter cuidado porque o Excel irá alterar seus dados (mexe com números, datas e tal). - Dale