以前、LinuxやMacのコンソール上での空行削除についてまとめたが、Windowsではどうするのだろう?と思ったので、少し調べてみた。
さすがにLinuxやMacほど応用は効かないしわかりにくい、タイピングしにくい…LinuxやUNIXに慣れてるとかなり扱いづらいけど、とりあえず実現はできるようだ。
1.Batch(cmd)でファイルのすべての空行を削除する
Batch(コマンドプロンプト)でファイルのすべての空行を削除する場合、以下のようにする。
findstr /v /r /c:"^\ *$" 対象ファイル
C:\Users\test>type blank_test.txt
123
456
789
C:\Users\test>findstr /v /r /c:"^\ *$" blank_test.txt
123
456
789
2.PowerShellでファイルのすべての空行を削除する
PowerShellでファイルのすべての空行を削除する場合、以下のようにする。
(gc ファイル) | ? {$_.trim() -ne "" }
PS C:\Users\test> type .\blank_test.txt
123
456
789
PS C:\Users\test> (gc blank_test.txt) | ? {$_.trim() -ne "" }
123
456
789
Batchだと末尾の空行が削除できないことを考えると、PowerShellでやったほうがよさそう。
なお、PowerShellの場合は空白やタブを含んでいてもこれで削除してくれるので、結構シンプルに書ける。