wc -l 在 Linux 與 macOS 上輸出的格式不同

Linux 上跑起來沒問題的 shell script 到 macOS 上發現有狀況,追了問題後發現是 wc -l 輸出的格式不同導致的。

Linux 上面是直接輸出數字:

$ echo abc | wc -l
1

macOS 上面則會在開頭看到 trailing space:

$ echo abc | wc -l
       1

可以搜到蠻多地方都有在討論這個問題,像是這篇:「WC on OSX - Return includes spaces」。

不過看起來 POSIX 標準沒有直接規定輸出的格式,只好照著語意再處理了,像是 | awk '{print $1}' 之類的方法。

One thought on “wc -l 在 Linux 與 macOS 上輸出的格式不同”

Leave a Reply

Your email address will not be published. Required fields are marked *