Notepad ++での重複行の削除


595

Notepad ++で重複した行を削除して、1つの行だけを残すことは可能ですか?

回答:


760

Notepad ++はこれを行うことができますが、行ごとに並べ替え、同時に重複する行を削除する必要がありました。

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

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

「出力のみを一意にソート...」がチェックされていることを確認してください。次に、テキストのブロックを選択します(Ctrl+ Aはドキュメント全体を選択します)。最後に、「行の大文字と小文字を区別する」または「行の大文字と小文字を区別しない」をクリックします。

n ++のメニューレイアウト


32
その「時代」にもかかわらず、信じられないほど強力なプラグイン。それらが標準のNPPプラグインオファーから削除されないことを願っています。このプラグインのすべての機能を考えた人は、一種の「空想家」でした。
GeertVc 2014

7
Excelより強力です。
Vasu

6
Notepad ++ x64バージョンについてはどうですか?プラグインTextFX x64のバージョンが存在しない
Geograph

15
TextFxは64ビットバージョンではありません。
Rhyous 2018年

4
@Geographそして、TextFxの64ビットプラグインはありません。このノートを参照してください。したがって、並べ替えと重複削除を提供する代替プラグインがあるかどうかを知っておくとよいでしょう。
ロバート

641

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

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

そして何と交換してください。これにより、すべての重複行から、ファイル内の最後のオカレンスが残ります。

そのための並べ替えは必要ありません。重複する行はファイルのどこにあってもかまいません。

オプション「正規表現」と「。は改行に一致する」をチェックする必要があります。

Notepad ++ Replaceダイアログ

  • ^ 行頭に一致します。

  • (.*?)任意の文字に0回以上一致しますが、できる限り少なく一致します(行で完全に一致します。これは、「。は改行に一致する」オプションのために必要です)。かっこで囲まれ、次を使用してアクセスできるため、一致した行が保存されます\1

  • $ 行末と一致します。

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

  • (?=.*^\1$)これは肯定的な先読み表明です。これはこの正規表現の重要な部分であり、ファイル内のどこかでまったく同じ行が続く場合にのみ、行が一致(および削除)されます。


10
ああ、これは素晴らしいです、それは空の行も削除します、私は今まさにそれをマクロ化しています:)
Aprillion

66
場合によっては、ファイル内のすべての行を削除するだけです。
SerG 2014

3
LASTオカレンスを削除する方法はありますか?これは最後の1つを除くすべてに一致します...
Cullub

28
このソリューションがすべての行を削除した私の場合、チェックを外すと. matches newlineトリックが行われました。
Kuitsi

3
@SerG場合によってはそれも機能しませんでしたが、 "matches newline"を削除したときは機能しました:)
Davidenko

95

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

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

と置換する: \1


1
たぶん他の人はこれで運が良かったかもしれませんが、私にとっては^(。* \ n)\ 1の結果は「Cant find the text」になります
b1nary.atr0phy

4
@ b1naryatr0phyでは、「検索モード」が「正規表現」に設定されていることを確認します。また、パターンを更新して、Windowsスタイルの行末を処理できるようにしました
Grant Peters

3
notepad ++には軽量の正規表現エンジンがあり、 "?または\ r \ n"も1行でしか機能せず、\ r \ n文字に$を使用するため、高度な機能は許可されていません
Stefan Rogin

3
これにより、1つずつ削除されます。あなたはそれを何度も繰り返す必要があります。なぜ\ n +-> \ nが機能しないのでしょうか(多くの置換が報告されていると考えられます)
Val

2
あなたは試合の後方参照部分を作る場合@valは、1-または-以上の一致を持つグループは、パターンが一度にN連続する重複行と一致しますが、必要:^(.*\r?\n)(\1)+
Kenigmatic

37

メモ帳++

->ウィンドウを置き換える

検索モードで、[ 正規表現 ]ラジオボタンが選択されていることを確認します

何を見つける:

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

と置換する:

$ 1

前:

私たちはそこにいると思います

私たちはそこにいると思います

単線

することは可能ですか

することは可能ですか

後:

私たちはそこにいると思います

単線

することは可能ですか


2
これを機能させるためにファイルをソートする必要はありませんか?
Peter Mortensen、

これは素晴らしい
Remo Liechti

30

行の順序を気にしない場合(私はそうは思わないでしょう)、Linux / FreeBSD / Mac OS X / Cygwinボックスを使用して、次のことができます。

$ cat yourfile | sort | uniq > yourfile_nodups

次に、ファイルをNotepad ++で再度開きます。


3
Windows 7では動作しません'cat' is not recognized as an internal or external command, operable program or batch file.
Iain Samuel McLean Elder 14

2
@Iain Elder:catは標準のUnixユーティリティです。そのため、この回答でLinux、FreeBSD、MacOSXで動作することが明記されています。答えはCygwynも示唆しています:これは、UNIXスタイルのシェルを提供するWindowsプログラムであり、それを使用して猫を作成します。短い話(遅すぎます!):これを行うには、Win 7にCygwinが必要です。
Travis Clark

11
ウィンドウでは、PowerShellを持っている:cat yourfile | sort -Unique
Elazar

9
これらは「猫の無償使用」の良い例です。catユーティリティのことを忘れて、ファイルリダイレクトをこのように使用してください:sort <yourfile | uniq> yourfile_nodups
scott8035

1
@ scott8035、私は猫がそのコマンドを実行するために役に立たないことに同意しますが、猫ファイルのような明白でないコマンドの長いシーケンスを理解するとき、猫から始めることはしばしば役に立ちます。sed ... | sed ... | sed ...など。だから猫を使うのには理由があるのではないでしょうか。もちろん猫は最後に取り除くことができますが、そのために怠惰な人もいます。
FORTRAN

17

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次のようなメモ帳++ pluginsディレクトリで、
    C:\プログラムファイル\メモ帳++ \プラグイン

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

TextFXプラグインをインストールしたら、回答1の手順に従って重複をソートして削除します。

また、このコマンドを頻繁に使用する場合や、ソートのためにTextPadのF9などのキーボードショートカットを複製する場合は、[設定]> [ショートカットマッパー]を使用してキーボードショートカットを設定することを検討してください。


notepad ++ 7.6では、プラグインをに追加する必要がありますC:\Users\<your_user>\AppData\Local\Notepad++\plugins\NppTextFX。それ以外は、これでも問題なく動作します。
P_W999 2018

14

バージョン7.8では、プラグインなしでこれを達成できます-編集->行操作->連続する重複行の削除。これが機能する前に、ファイルをソートして重複する行を連続した順序で配置する必要がありますが、それは魅力のように機能します。

並べ替えオプションは、編集->行の操作->並べ替え...で利用できます。


7

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

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

  1. cc.ddlテキストの最後にコマンドラインを入力します。
  2. テキストとコマンドラインをコピーします。
  3. 貼り付けると、必要なものが表示されます。


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


5

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

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

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


これを試すためのテストファイルを作成しましたが、正規表現が確実に機能せず、ジョブを完了できませんでした。
RockPaperLizard 2016年

私が答えを改善できるように失敗した例を提供していただけませんか?
Hesham Eraqi

4

どれも私のために働いていません。

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

交換する

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

\1

これを試すためのテストファイルを作成しましたが、正規表現が確実に機能せず、ジョブを完了できませんでした。
RockPaperLizard 2016年

私のすべてのデータについて、それはうまくいきました。私のソリューションが何であったかを忘れました。他の人がこの正規表現を改善できるように、失敗した場所に詳細を追加します。
Manohar Reddy Poreddy 2016年

各行に0〜999の整数がランダムな順序で、場合によっては重複して含まれるようにファイルを作成しました。ほとんどの重複は削除されず、連続していない重複も削除されませんでした。
RockPaperLizard 2016年

1
機能するものと機能しないものの2つの例を提供してください。それは誰かを助けるでしょう。
Manohar Reddy Poreddy 2016年

1
なぜ^(.*)\s+(\r?\n\1\s+)+$、そうではないの^(.*)\s*(\r?\n\1\s*)+$ですか?
Mark Ch

2

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

必要な機能を含む別のプラグインがあるかもしれません。それ以外の場合、Notepad ++でこれを行う唯一の方法は、照合と置換に特別な正規表現を使用することです([ Ctrl+ ] F→ [ 置換 ]タブ)。

[ 編集 ]メニュー項目(トリミング、空の行の削除、並べ替え、EOLの変換)を介して利用できる機能はたくさんありますが、「独自の」操作はありません。

Windows 10を使用している場合は、Bash有効にして(Microsoft StoreでUbuntuと入力し、説明の指示に従ってインストールする)、を使用できますcat your_file.txt | sort | uniq > your_file_edited.txt。もちろん、「your_file.txt」と同じ作業ディレクトリにいるか、パスを介して参照する必要があります。

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