微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux head实用程序只读取一行需要更多输入才能退出

我需要逐行读取连续数据流(实际上是管道),我需要在第一行之后退出.在第1行之后.听起来很简单,但是,使用“head -n 1”,我注意到我实际上需要在退出前进入第二行.

测试用例:

[s@svr1 ~]$cat | head -n 1    
123    <- I type this first (followed by enter, of course)
123    <- I get this output from head, but the command does no exit
456    <- Then I need to type this for the command to exit and bring me back to the prompt
[s@svr1 ~]$

有人可以解释(首先)为什么它会像那样,也许我怎么能得到我需要的东西?
(我想坚持基本的Linux / Unix轻量级构建块.没有Perl,Python等……)

谢谢

解决方法:

因为你正在使用猫| head -n 1,这是一个useless use of cat,与head -n 1不同.如果你在控制台上执行-n 1,你会得到你想要的行为 – head读取一行,打印并退出.

如果你做猫|头-n 1,然后发生这种情况:

> cat从输入中读取“123”.
> cat将“123”写入其输出.
> head从其输入读取“123”(连接到cat的输出).
> head将“123”写入其输出退出.
> cat从输入中读取“456”.
> cat尝试将“456”写入其输出.
> cat获取SIGPIPE,因为其输出另一端的进程已经死亡.
>猫退出.

只要它写成“123”,猫就会开始另一次阅读,并且它没有发现头已经死了,直到它试图写第二行为止.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐