web-dev-qa-db-ja.com

Sublime Textで重複する行を抽出する方法はありますか?

Sublime Textで2つの操作を実行する必要があります。一意の行を抽出し、重複する行を抽出します。入力例

a
b
a

重複を抽出すると、次の結果になります。

a

そして、Extract uniqueは次の結果をもたらすはずです:

b

組み込みの操作またはそれを行うプラグインはありますか?

9
Poma

Sort Linesを実行し、行の境界マーカー^および$と後方参照\1を使用するこの正規表現を検索することで、重複行を簡単に見つけることができます。

^(.+)$\n^\1$

その後、すべてを検索、コピー、新しいタブに貼り付け、行を並べ替え|ユニークで、あなたはそれらを抽出しました。

13
twamley

残念ながら、現時点ではSublime Textにアクセスできないため、これをテストすることはできませんが、次のようなものがうまくいくと思います。

  1. Edit -> Sort Linesコマンドで行を並べ替えます
  2. Highlight Duplicates プラグインをインストールし、それを使用してすべての重複行を強調表示します
  3. 強調表示された行をクリップボードに切り取り、新しいファイルに貼り付けます
  4. 元のファイルに残っている行はExtract Unique行です
  5. 新しいファイルですべてのテキストを選択し、Edit -> Permute Lines -> Uniqueコマンドを使用して重複行を削除します
  6. 新しいファイルに残る行は、あなたのExtract Duplicates行です

手順1が実際に必要かどうかは完全にはわかりませんが、念のために含めました。

2
MJH

同じ問題がありました(重複を表示してください)...簡単なSublimeベースの回答が見つからず、Unixコマンドを使用することにしました(私のファイルには、11〜56列で重複を見つけたいデータがありました)。

cut -c 11-56 myfile.dat | sort | uniq -d

他の人への参考としてここに投稿しました。

0
Tom Hundt

上記の@MJHの回答を少し変更して、Highlight Duplicatesプラグインを使用せずに、Sublime 3とDiffMergeで重複行を取得しました。

  1. Sublime 3 Edit -> Sort Linesコマンドで行を並べ替えます
  2. 元のファイルをsorted_orig.txtとして保存します
  3. すべてのテキストを選択し、Sublime 3 Edit -> Permute Lines -> Uniqueコマンドで重複行を削除します
  4. 変更したファイルをno_dup_sorted.txtとして保存します
  5. sorted_orig.txtおよびno_dup_sorted.txtファイルを使用してDiffMergeツールで差分を開始します。
  6. DiffMergeでExport -> File Diffsを使用して、クリップボードにある重複のリストを取得するか、別のファイルに保存します。
0
Alex M.