Notepad ++で行の順序を反転または逆にする


95

500行以上のドキュメントの行順序を反転させたい。行は単なる数字ではなく、テキストやその他の文字を含むものもあります。ミックスです。

例:

ライン1
2行目
3行目
行4
5行目
6行目

次に、下から上に反転、反転、およびこのように表示します。

6行目
5行目
行4
3行目
2行目
ライン1

左マージンの数字をカウントダウンしたいのですか、それともファイルの実際のコンテンツを逆にしたいのですか?
Maxpm

2
@Maxpm取り消されるファイルの実際のコンテンツ。
ダンペ


回答:


102

通常含まれているTextFXプラグイン以外のソフトウェアを必要としないソリューション:

  1. 編集>すべて選択
  2. TextFX> TextFXツール>行番号の挿入
  3. TextFX> TextFX Tools> + Sort ascendingがチェックされている場合は、チェックを外します
  4. TextFX> TextFXツール>大文字と小文字を区別して行を並べ替える(列)
  5. TextFX> TextFXツール>行番号または最初の単語の削除

6
TextFXが見つからない場合は、[プラグイン]»[プラグインマネージャー]»[プラグインマネージャーを表示]»[TextFXキャラクター]をチェックして、[インストール]をクリックします。こちらをご覧ください:textfx.no-ip.com/textfx
カルペシュ・パンチャル

-何働いする)部分4の「並べ替え行は大文字と小文字を区別しない」であった
Theta30

@ Theta30:私が使用したバージョンからUIテキストが変更されたと思います。
グヌビー14

2
Eclipseを使用している場合は、これをさらに簡単に行うための回答を参照してください 。(元の質問がNotepad ++を要求したことは知っていますが、これに出くわした人にはこれを追加する価値があると思いました)。
スティーブチェンバーズ

2
TextFXは、64ビットバージョンでサポートされているプラ​​グインではありません。
Rhyous

34

これは、TextFXプラグインなしでNotepad ++でも実行できます。受け入れられた回答と同じ戦略に従いますが、ネイティブ機能を使用します。次のように行われます。

  1. 編集>すべて選択
  2. 編集>列エディター...>挿入する番号を選択>初期番号を1に設定>増分を1に設定>先行ゼロをチェック> OKをクリック

ここに画像の説明を入力してください

  1. 降順での編集>ライン操作>ソート行 編集:最近の更新は、余分なソートオプションを追加し、オプション:ソート行辞書順降順で仕事をするようです。

ここに画像の説明を入力してください

  1. ボックス選択(Alt +左​​クリックドラッグまたはAlt + Shift選択)または検索/置換のいずれかで行番号を削除します

ここに画像の説明を入力してください


1
動作しますが、次の2つの点に注意してください。1-最後の(空の)行に追加の番号を挿入するため、ソートする前に削除する必要があります。2-リストが数字で始まる場合、挿入された数字の後にスペースが挿入されないため、挿入された数字を数字で混乱させる可能性があります。したがって、この場合は注意が必要です。
フランシスコアルバラード

新バージョンでは、ステップ3を再現することはできません文言を変更しました、そしてどんなオプションが私のために動作しません
Ooker

1
@TrevorYoung- 別のユーザーによって追加された画像について苦情を言っています 回答の書式を修正し、編集を承認しました。画像が役に立たない場合は削除してください。あなたが答えの著者です。画像の追加は許容可能な編集です(つまり、答えは画像なしの場合よりも画像の方が優れています)
ラムハウンド

1
@Ramhoundおaび申し上げます。編集履歴を見て、あなたは画像を追加したと思いましたが、そうではありません。私はそこにいるイメージに問題はありませんが、与えられた提案が代わりに行われた方が良いかもしれないと付け加えた人に提案をしようとしていました。
トレバーヤング

1
これは奇妙ですが、動作します
...-kayleeFrye_onDeck

6

コード例を提供しているので、Windows 7を使用している場合、またはPowerShellを別のバージョンのWindowsにインストールしている場合は、次のようになります。

$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

または、非コーディングの回答については、gVimをダウンロードし、ファイルを開いて次を入力します。

:g/^/m0

Windows 7を使用していますが、そのコードはどこに貼り付けますか?これは本当に興味深いです。
ダンペ

2
[スタート]メニューを開き、Powershellと入力します。「Windows Powershell」をダブルクリックします。コマンドプロンプトが開きます。そこで実行します。また、IDE(統合スクリプトエディターと呼ばれますが)もありますが、ほとんどの作業はコマンドプロンプトで行い、スクリプトの編集にはGVimを使用しています。
EBGreen

これをどのようにNotepad ++に統合できますか?(質問のタイトルは「Notepad ++での行順または逆行順」です。)
Peter Mortensen

それが答えではなくコメントである理由です。これは、文字通りの質問への回答というよりも、ユーザーが望んでいたと思うことを達成するための代替方法です。
EBGreen

5

C ++のコンパイルに慣れている場合は、これでうまくいくはずです。基本的に、ファイルの各行をベクトルに入れ、逆イテレーターを使用して新しいファイルに出力します。

#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;
}

出力ファイルに行間の改行がない場合、改行を追加outFile << *rIt;するように変更します outFile << *rIt << "\r\n";\rUnix / Linuxの場合は省略します)。

免責事項:私はこのコードをテストしていません(メモ帳で実際にすばやく書きました)が、実行可能に見えます。


おかげで男:)しかし、私はすでに私のコードを使用しましたが、それは他の人にとって非常に役立ちます。ところで、多分私はそのためのNotepad ++プラグインを書くでしょう。notepad ++プラグインで使用する言語はどれですか?
ダンペ

@DanpeほとんどのNotepad ++プラグインはC ++で記述されていますが、技術的には.DLLをコンパイルできる(および適切なAPIバインディングを備えた)他の言語に拡張できます。
ブレークスルー

だからあなたはちょうどプラグインを作成したと思う:)
Danpe

これをどのようにNotepad ++に統合できますか?(質問のタイトルは「Notepad ++での行順または反転行順」です。)
Peter Mortensen


2

あなたはウェブサイトhttp://textmechanic.co/Sort-Text-Lines.htmlでそれをオンラインで行うことができます


1
ウェブサイトは壊れていますが、textmechanic.co / Sort
ジョージチャルブ

1
@georgechalhoubありがとう、答えを更新しました。
フランクデルノンクール

これをどのようにNotepad ++に統合できますか?(質問のタイトルは「Notepad ++での行順または逆行順」です。)
Peter Mortensen

1

これは私が書いたばかりのC#.NETコードです:)

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);
        }
    }
}

ここにunsafeキーワードが必要なのはなぜMainですか?
ブレークスルー

@Breakどうやってそこにたどり着いたのかわからない:O
ダンペ

1
これをどうすればnotepad ++に統合できますか?
テオマンshipahi

これをどのようにNotepad ++に統合できますか?(質問のタイトルは「Notepad ++での行順または逆行順」です。)
Peter Mortensen

0

非コーディングの方法は次のとおりです。

  1. TextPad無料試用版のダウンロード/インストール
  2. スプレッドシートプログラム(Excelなど)を開き、セルA1に「1000」を入力し、セルA2に「A1 + 1」を入力し、それをA500にコピーして、列「A」に1000〜1500の数字を作成します。
  3. TextPadでテキストファイルを開きます
  4. TextPadで「ブロックモード」に変更する
  5. スプレッドシートの列AをTextPadに貼り付けます(ブロックモードのため、すべてが左マージンに配置されます)
  6. TextPadソート機能を使用して、降順
  7. TextPadブロックモードの削除を使用して、数字を取り除きます

2
とにかくExcelを使用する場合は、エディターからファイルの内容をコピーし、Excelに貼り付けてください。次の列のシリーズに一連の数字を入力します。両方の列を選択し、数値列で降順に並べ替えます。テキスト列をコピーして、エディターに貼り付けます。
EBGreen

@EBGreen、あなたは正しいです。私はアホです。Excelはデータ(数字、日付などの混乱)を変更するため、注意が必要です。
デール

これをどのようにNotepad ++に統合できますか?(質問のタイトルは「Notepad ++での行順または逆行順」です。)
Peter Mortensen

@PeterMortensen、元の質問は、「Notepad ++で利用できない場合は、他のソフトウェアも使用できます:)」
Dale

0

ワンクリックでこれをNotepad ++で自動化する場合:

  1. このPythonスクリプトプラグインを入手する
  2. 以下のコードを追加して、Pythonスクリプトフォルダーに.pyファイルとして保存します(このフォルダーの場所を確認するには、[プラグイン]タブをクリックし、[Pythonスクリプトと新しいスクリプト]をクリックします)。

レック・ディクハードへの栄光!

コンテキストメニューに追加するには:

プラグインタブ→ Pythonスクリプト設定をクリックすると、スクリプトをツールバーアイコンまたはPythonスクリプトメニュー自体のいずれかに割り当てることができます。(スクリプトをメニューに割り当てると、すぐに表示されますが、次にNotepad ++が起動するまでショートカットを割り当てることはできません。ツールバーアイコンに割り当てると、スクリプトは次のNotepad ++の開始。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.