これは、コマンドプロンプト(cmd.exe) Advent Calendar 2015 - Qiitaの21日目の記事です。※Windows 10 Home 64bit 搭載のcmd.exeにて検証を行っています。
BATファイルを使って簡易版uniqコマンドを作成します。
uniq.bat
1
2
3
4
5
6
7
8
9
10
11
|
@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)
1
2
3
4
5
6
7
8
9
10
|
aaa
bbb
ccc
ccc
cccccc
bbb
|
実行
1
2
3
4
5
6
7
8
9
10
11
12
13
|
C:\usr\home>type aaa.txt | uniq
aaa
bbb
ccc
cccccc
bbb
C:\usr\home>type aaa.txt | sort | uniq
aaa
bbb
ccc
cccccc
|
いじょ。