はじめに
WSLを使うと、コマンドウィンドウからLinuxのコマンドが簡単に使えて大変便利です。昔はちょっとしたコマンドを使うのにmsysなどの環境をインストールしていましたが、今どきはWSLだけで事足ります。しかし、WSL環境ならではのパイプの扱いに慣れていないと、期待する結果が得られません。しばらく使っていないとすぐに忘れてしまうので、ワンライナー的なメモにして残すことにしました。
要点
- Windows側のパイプを使う場合は、普通に書けば大丈夫です。
type a.txt | wsl cat | findstr "."
- Linux側のパイプを使う場合は
^
でエスケープします。
type a.txt | wsl cat ^| awk '1' ^| python -c "import sys; sys.stdout.write(sys.stdin.read())"
- 上記をWindowsのパイプで処理させる場合:
type a.txt | wsl cat | wsl awk '1' | wsl python -c "import sys; sys.stdout.write(sys.stdin.read())"
注意点
- WSL(Linux側)で処理された結果は、Linux側のコード体系になります。WSLのデフォルトはUTF-8なので注意してください。
-
findstr "."
は空行を削除するので、cat
の代用にはなりません。
おわりに
これが初めての投稿です。至らない点があればご指摘をお願いします。