我创建了一个名为“test”的测试文件,其中包含以下内容:
xxx
yyy
zzz
Run Code Online (Sandbox Code Playgroud)
我运行了命令:
(sed '/y/ q'; echo aaa; cat) < test
Run Code Online (Sandbox Code Playgroud)
我得到了:
xxx
yyy
aaa
zzz
Run Code Online (Sandbox Code Playgroud)
然后我跑了:
cat test | (sed '/y/ q'; echo aaa; cat)
Run Code Online (Sandbox Code Playgroud)
并得到:
xxx
yyy
aaa
Run Code Online (Sandbox Code Playgroud)
题
sed读取并打印,直到遇到带有 'y' 的行,然后停止。在第一种情况下,但不是第二种情况,cat 读取并打印其余部分。
有人可以解释这种行为差异背后的现象吗?
我还注意到它在 Ubuntu 16.04 和 Centos 6 中以这种方式工作,但在 Centos 7 中,这两个命令都没有打印“zzz”。