重複行を削除してファイルをソートするためのバッチ?


1

テキストファイルがある場合は、コマンドで並べ替えることができます sort input.txt output.txt。テキストファイルから重複行を削除することもできますか。 (理想的には、Windowsでバッチファイルで実行できる解決策が欲しいのですが。)

これは基本的にテキストファイルから重複を削除する方法を尋ねることと同じです。ソートについて言及した理由は、ファイルがソートされていて、それらが連続した行にしか現れないことを知っていれば、重複を削除する方が簡単だと思うからです。 。だから私はそれがソートと一緒に重複を削除する方法がある可能性が高いと思います。 (そして、私がこのidを使いたいという目的のためには、繰り返される行が削除される限り、ファイル内の行の順序が変更されても問題ありません。)

たとえば、次のようなファイルからは、

100
100
100
100
101
101
102

手に入れたい

100
101
102

これが私のSUに関する最初の質問です。私はこれがサイト上ですでに答えられているかどうかをチェックし、また正しいタグを選択しようと最善を尽くしました。もちろん、このサイトの経験豊富なユーザーがより適切なタグを提案し、私が見逃した既存の投稿を指摘してくれるのであれば、私は感謝するでしょう。
Martin

特にネイティブのWindowsツールでこれを維持する必要がありますか? PythonやNodeJSのようなもっと強力なスクリプト環境を使う機会はないでしょうか?残念ながら、Windowsのコマンドライン(および結果としてバッチファイル)は、データを動的に処理するのにはあまり効率的ではありません。それは不可能ではない、非常にトリッキーです。
ZaLiTHkA

もちろん、バッチファイルを使用した解決策がない場合、またはそれが非常に難しい場合は、他の可能性を検討します。もちろん、誰かがあなたが言及したツールに慣れているなら、そのようなユーザにとって最も自然な解決策はそれらを使うことであるかもしれないと私は理解します。ただし、最初の可能性として、これがバッチファイルを使用して実行可能かどうかを尋ねました。
Martin

それは絶対に可能です、私はそれのための特定の要件があるかどうか疑問に思いました。 :) Walmartのソリューションはこれを本当にうまく処理しており、私ができたよりはるかに効率的です。 俺の Windows CLIツールの知識
ZaLiTHkA

その点に注意してください superuser.com 無料のスクリプト/コードライティングサービスではありません。あなたが今までに試したこと(すでに使っているスクリプトやコードを含む)と行き詰まった場所を教えていただければ、私たちは特定の問題を解決することを試みることができます。また読むべき 良い質問をするにはどうすればいいですか。
DavidPostill

回答:


3

重複行を削除してファイルをソートするためのバッチ?

以下は、このタスクを完了するために要求したとおりのバッチスクリプトネイティブWindowsソリューションです。それに応じて入力ファイルと出力ファイルの変数を設定するだけです。

ボーナスノート: 変更した場合 SET InputFile=%~1 そのようにして、保存したバッチスクリプトにファイルをドラッグすると、簡単なドラッグアンドドロップ方法でタスクを完了できます。

バッチスクリプト

@ECHO ON

SET InputFile=C:\folder\path\Input.txt
::SET InputFile=%~1
SET OutputFile=C:\folder\path\Output.txt

SET PSScript=%Temp%\~tmpRemoveDupe.ps1
IF EXIST "%PSScript%" DEL /Q /F "%PSScript%"
ECHO Get-Content "%InputFile%" ^| Sort-Object ^| Get-Unique ^> "%OutputFile%">>"%PSScript%"

SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"

GOTO EOF

その他の資料

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