uniq on win

(via http://d.hatena.ne.jp/ku__ra__ge/20080122/p7)

63.

Re:unixiのuniqコマンド
2004年01月13日(火) 14時27分


じゃく
こんにちは。

unixのuniqコマンドと同じように重複した列は除いたファイルを
>出力したいのですが、過去のログをみていたのですが、いまいち
>理解できませんでした。
dosコマンドは初心者なので、イメージとしてはファイルを1行ずつ
>読み込んで、変数に代入し次の行が変数と違うなら出力する
>ということだと思うのですが、ご教授していただけませんか。

OSを2000/XP系だとしてお話しします。
上で述べられていることをそのままコマンドプロンプト
簡単に作成してみました。

--------------------------------------uniq.bat
echo off
set prev=
if not exist "%1" goto error
for /f "tokens=* delims=" %%L in ( %1 ) do call :sub %%L
goto exit
:sub
if not "%prev%"=="%*" set prev=%*&&echo %*
goto :EOF
:error
echo.
echo 表示したいファイル名を指定してください。
echo [例] uniq.bat file.txt
echo.
:exit

for文でファイルから1行を取り出し、call文でサブルーチンを
呼び出してそこで、以前と同一行かチェックしています。

95/98系ですとこのような for 文の機能がありませんので、
別途 unix like tool などのフリーソフトを使うことになるでしょう。

http://www.fpcu.jp/dosvcmd/bbs/log/unixdoswindows/3-0062.html