我以为在Bash中这些命令是等效的,但它们产生了不同的输出。你能帮我理解为什么吗?
$ echo "SEBA" | wc
1 1 5
$ wc <<< "SEBA"
1 1 5
运行环境:
- Ubuntu 20.04.2 LTS
- GNU bash,版本 5.0.17(1)-release (x86_64-pc-linux-gnu)
- wc(GNU coreutils)8.30
以下是一些测试:
$ echo "SEBA" | wc | hexdump
0000000 2020 2020 2020 2031 2020 2020 2020 2031
0000010 2020 2020 2020 0a35
0000018
$ wc <<< "SEBA" | hexdump
0000000 2031 2031 0a35
0000006
$ echo "SEBA" | hexdump
0000000 4553 4142 000a
0000005
$ hexdump <<< "SEBA"
0000000 4553 4142 000a
0000005
wc
的输出。(这是特定于Linuxcoreutils
版本的wc
;我无法在macOS上使用BSD版本重现这种差异。) - chepnerwc
的输出实际上使用了" %7d %7d %7d\n"
作为格式 - 数字以8个字符宽的字段打印(直到您处理大文件)。 - Jonathan Leffler