mac の wc が無駄なスペースを含んでくる

wc の mac/Linux 間での挙動の違い

自作 GitHub Actions で mac/win などの runner も対応させたいなと思って対応していた際に遭遇したのでメモ。早速 macos-latest でエラーになったので調べているとどうやら wc -l を含むシェルでエラーになっていた。

ググるとすぐに以下の記事が見つかった。

Linux のwcコマンドをmac OS Catalinaで使い、csvファイルの行数をカウントしたい。
Linux のwcコマンドをmac OS Catalinaで使いたいのですが、うまくいきません。 csvファイルの行数をカウントしたく、次のようにwcコマンドを使用しカウントを試みているのですが
Linux のwcコマンドをmac OS Catalinaで使い、csvファイルの行数をカウントしたい。 favicon teratail.com
Linux のwcコマンドをmac OS Catalinaで使い、csvファイルの行数をカウントしたい。

これまでは、標準出力させたもの(行数など)を数える際、脳死で wc -l を使っていたが、どうやら macOS に搭載されている wc コマンドの挙動が若干 Linux のそれとは異なり、スペースを含んでしまう。

  • Linux
$ echo -e "hoge\nfuga" | wc -l
2
  • mac
$ echo -e "hoge\nfuga" | wc -l
       2

対策

wc - l | tr -d ' ' とパイプで tr に渡してスペースを消してあげれば良い。他にもこうやればいいよというのがあれば Twitter などで教えていただけると大変ありがたい 🙏