くんすとの備忘録

IT系技術メモ

移転しました。

15秒後に自動的にリダイレクトします。

BATファイルでuniqコマンドを実装

これは、コマンドプロンプト(cmd.exe) Advent Calendar 2015 - Qiitaの21日目の記事です。

Windows 10 Home 64bit 搭載のcmd.exeにて検証を行っています。


BATファイルを使って簡易版uniqコマンドを作成します。

uniq.bat
@echo off
for /f "usebackq tokens=* delims=" %%i in (`findstr .*`) do call :sub %%i
goto :EOF 

:sub 
    if not "%PREV%"=="%*" (
        set PREV=%*
        echo %*
    )
exit /b

標準入力の1行1行をサブルーチンに渡し、サブルーチン内で「ひとつ前の行の値」を保持しているだけ、という単純な作りです。

使用例

入力ファイル (aaa.txt)

aaa

bbb


ccc
ccc
cccccc

bbb

実行

C:\usr\home>type aaa.txt | uniq
aaa
bbb
ccc
cccccc
bbb

C:\usr\home>type aaa.txt | sort | uniq
aaa
bbb
ccc
cccccc


いじょ。