web-dev-qa-db-ja.com

Notepad ++で重複行を削除する

メモ帳++で重複行を削除し、1行だけを残すことは可能ですか?

548
UGEEN

Notepad ++は、行ごとにソートし、同時に重複行を削除したい場合に限り、これを実行できます。

あなたはTextFXプラグインが必要になります。これは以前のバージョンのNotepad ++には含まれていましたが、新しいバージョンをお持ちの場合はPlugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Installに移動してメニューから追加できます。場合によってはTextFX Charactersと呼ばれることもありますが、これは同じことです。

必要なチェックボックスとボタンがTextFX -> TextFX Toolsの下のメニューに表示されます。

「出力を一意に並べ替えるだけでソートする」にチェックが入っていることを確認してください。次に、テキストブロックを選択します(Ctrl+A 文書全体を選択します。最後に、「ソートラインで大文字と小文字を区別する」または「ソートラインで大文字と小文字を区別しない」をクリックします。

menu layout in n++

743
Colin Pickard

Notepad ++ Version 6以降 検索および置換ダイアログでこの正規表現を使用できます。

^(.*?)$\s+?^(?=.*^\1$)

何も置き換えない これにより、すべての重複行からファイル内で最後に出現した行が残ります。

それにはソートは不要で、重複行はファイル内のどこにでも置くことができます。

「正規表現」と「。matches newline」のオプションをチェックする必要があります。

Notepad++ Replace dialogue

  • ^は行の先頭に一致します。

  • (.*?)は0回以上の任意の文字と一致しますが、可能な限り少なくします(行内で正確に一致します。これは "。matches newline"オプションのために必要です)。角かっこがあり、\1を使用してアクセスできるため、一致した行が格納されます。

  • $は行の終わりに一致します。

  • \s+?^この部分は、次の行の先頭までのすべての空白文字(改行!)に一致します。これにより、一致した行の後の改行が削除され、置き換え後に空の行がなくなります。

  • (?=.*^\1$)これは先見の明の表明です。これは、この正規表現で重要な部分です。ファイル内の別の場所に正確に同じ行が続く場合にのみ、行が一致(および削除)されます。

555
stema

行が互いの直後にある場合は、正規表現の置換を使用できます。

検索パターン:^(.*\r?\n)(\1)+

に置き換えてください。\1

84
Grant Peters

メモ帳++

- >置換ウィンドウ

検索モードでそれを確認してください

あなたは正規表現ラジオボタンを選択しました

何を見つけますか:

^(。*)(\ r?\ n\1)+ $

と置換する:

1ドル

前:

そして我々はそこにいると思う

そして我々はそこにいると思う

単線

可能ですか

可能ですか

の後:

そして我々はそこにいると思う

単線

可能ですか

29
blueberry0xff

あなたが行の順序を気にしないのなら(私はあなたがそうは思わない)、あなたはLinux/FreeBSD/Mac OS X/Cygwinのボックスを使用して以下のようにすることができます。

$ cat yourfile | sort | uniq > yourfile_nodups

その後、メモ帳++でファイルをもう一度開きます。

25

後者のバージョンのNotepad ++には、明らかにTextFXプラグインがまったく含まれていません。重複をソート/排除するためにプラグインを使用するには、プラグインをダウンロードしてインストールする(より複雑にする)か、プラグインマネージャを使用して追加する必要があります。

A)簡単な方法(説明されているように ここ )。

プラグイン - >プラグインマネージャ - >プラグインマネージャの表示 - >利用可能なタブ - > TextFXの文字 - >インストール

B)もっと複雑な方法、他のバージョンが必要な場合、または簡単な方法ではうまくいかない場合。

  1. SourceForgeからプラグインをダウンロードしてください。

    http://downloads.sourceforge.net/project/npp-plugins/TextFX/TextFX%20v0.26/TextFX.v0.26.unicode.bin.Zip

  2. Zipファイルを開き、 NppTextFX.dll を抽出します。

  3. NppTextFX.dll をNotepad ++ pluginsディレクトリに配置します。
    C:\ Program Files\Notepad ++\plugins

  4. Notepad ++を起動すると、TextFXがファイルメニュー項目の1つになります(Colin Pickardによる上記の回答#1を参照)。

TextFXプラグインをインストールした後、答え#1の指示に従って重複をソートして削除します。

また、このコマンドを頻繁に使用する場合や、並べ替えにTextPadのF9キーを使用する場合など、キーボードショートカットを 設定> Shorcutマッパー を使用して設定することを検討してください。

14
eeasterly

誰も私のために働きませんでした。

解決策は次のとおりです。

交換する

^(.*)\s+(\r?\n\1\s+)+$

\1

これを行うにはプラグインが必要かもしれません。 ConyEdit のコマンドラインcc.ddl(重複行の削除)を試すことができます。これは、Notepad ++を含むテキストエディタ用のクロスエディタプラグインです。

ConyEditがバックグラウンドで実行されている場合は、次の手順に従います。

  1. テキストの最後にコマンドラインcc.ddlを入力してください。
  2. テキストとコマンドラインをコピーします。
  3. 貼り付けてください、そして、あなたはあなたが欲しいものを見るでしょう。


enter image description here

4
Donald

正規表現を検索します:\b(\w+)\b([\w\W]*)\b\1\b

それを次のものに置き換えます。$1$2

ファイルに正規表現に一致するものがなくなるまで、置換ボタンを押します。

3
Hesham Eraqi

Notepad ++用のプラグインマネージャは現在利用できません(ディストリビューションには付属していません)。手動でインストールする必要があります( https://github.com/bruderstein/nppPluginManager/releases )。プラグインはもう利用できません(TextFXなし)プラグイン。

たぶん、必要な機能を含む別のプラグインがあります。それ以外にNotePad ++でそれを行う唯一の方法は、マッチングのために特別な regex を使用してから置換することです(CTRL + F - >置換タブ)。

編集 メニュー項目(トリミング、空行の削除、ソート、EOLの変換)を介して利用できる機能はたくさんありますが、利用できる "ユニークな"操作はありません。

私はあなたがWindows 10を持っているなら、あなたは Bash を有効にする(MicrosoftストアでUbuntuとタイプしてそれをインストールするために説明の指示に従う)そしてcat your_file.txt | sort | uniq > your_file_edited.txtを使うことができる。もちろん、あなたは "your_file.txt"と同じ作業ディレクトリにいるか、それをパスで参照しなければなりません。

1
Patronaut