9

次のようなファイルがあるとします。

apple
pear
lemon
lemon
pear
orange
lemon

一意の行のみを保持するようにするにはどうすればよいので、次のようになります。

apple
pear
lemon
orange

元のファイルを変更するか、新しいファイルを作成できます。

元のファイルを一度に 1 行ずつスキャンし、その行が新しいファイルに存在するかどうかを確認し、存在しない場合は追加する方法があると考えています。ここでは、本当に大きなファイルを扱っていません。

4

8 に答える 8

12
@echo off
setlocal disabledelayedexpansion
set "prev="
for /f "delims=" %%F in ('sort uniqinput.txt') do (
  set "curr=%%F"
  setlocal enabledelayedexpansion
  if "!prev!" neq "!curr!" echo !curr!
  endlocal
  set "prev=%%F"
)

機能: 最初に入力を並べ替えてから、順番に並べ替えて、現在の行が前の行と異なる場合にのみ出力します。特殊文字を処理する必要がない場合は、さらに簡単になる可能性があります (そのsetlocal/endlocalためです)。ファイル do に書き込みたい場合は、に
行をエコーするだけです(バッチに名前を付けたと仮定します)stdoutmyUniq.batmyUniq >>output.txt

于 2012-10-11T20:24:41.520 に答える
2

追加のプログラムなしでコマンド ラインからこれを行う簡単な方法はありません。

uniqあなたが望むことをします。

または、CoreUtils for Windowsをダウンロードして、GNU ツールを入手することもできます。その後、必要sort -uなものを取得するために使用できます。

これらのいずれかがバッチ ファイルから呼び出せる必要があります。

個人的には、そのような多くのテキスト操作を行う必要がある場合は、 Cygwinを入手したほうがよいと思います。sort次に、sedawkvim、 などに簡単にアクセスできます。

于 2012-10-11T18:46:44.303 に答える
-5

SORTコマンドを使用できます

例えば

SORT test.txt > Sorted.txt

于 2013-10-14T12:45:27.503 に答える