TEXTファイル内の重複行を削除しますか?


3

私はテキストをクリーンアップしようとしていますが、何らかの理由ですべての行が3回重複しています正規表現またはトリックで重複に乗ることができますか?

Party Started 10:17 (89/1/2)
Party Started 10:17 (89/1/2)
Party Started 10:17 (89/1/2)
Jessica At Dinner 17:54 (89/1/2)
Jessica At Dinner 17:54 (89/1/2)
Jessica At Dinner 17:54 (89/1/2)

どのようにしてクリーンアップし、重複した行に乗ることができますか?約69,587行です

回答:



5

MS Officeに言及しているので、ネイティブのWindowsソリューションを紹介します。

。あなたは、Windows Vista以降を使用している場合は、Windows PowerShellが内蔵のあなたがコマンドを使用することができますがありますGet-Unique

Get-Uniqueコマンドレットは、並べ替えられたリストの各アイテムを次のアイテムと比較し、重複を排除し、各アイテムの1つのインスタンスのみを返します。コマンドレットが正しく機能するには、リストを並べ替える必要があります。

Get-Content input.txt | Get-Unique | Set-Content output.txt

並べ替えられていない場合は、使用できますSort-Object -Unique(既に並べ替えられている入力でも動作しますが、他の行の間にある重複を削除したくない場合使用しないでください)。

Get-Content input.txt | Sort-Object -Unique | Set-Content output.txt

私は、LinuxとWindowsの両方を持っているUnixのソリューションだけで働いていたが、男は、私は何かを学んだ、このPowerShellは、強力な、感謝の先生だ
echolab

1
@echolab PowerShellは、多くの標準のLinuxおよびWindowsコマンドをエイリアス化するため、lsまたはdirなどの機能を実行できます。引数はそう、異なる場合がありman <command>help <command>またはGet-Help <command>非常に便利です。.NET Frameworkの任意のものを使用することもできるため、非常に強力ですが、少し混乱する可能性があります。この場合でも、cat input.txt | unique > output.txt動作します。
ボブ

1
また、XPのためのPowerShellをダウンロードすることができます
ジョー・パーソン

1

正規表現がタグ付けされたので、

/(.+)\n\1/g

いいえ、誤検知を取得します。s/^(.*\n)\1+/\1/mg全体的に、おそらく?
-muhmuhten

@sreservoir、ああ、間違いなく複数の繰り返しを探すことをお勧めします。メインの一致に改行を含めると、ファイルの末尾の繰り返しに一致しません。また、.*私にトラブルを与え、空の文字列や単語の障壁、またはその種の何かに一致させていました。また、誤検知についてどういう意味ですか?例がありますか?
mowwwalker
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.