【发布时间】:2025-12-21 08:05:17
【问题描述】:
我有一个很长的文本流,开始发送到stdout。在 bash 中,我可以通过运行来显示前几行:
$ seq 1 5010 | head 5
1
2
3
4
5
还是结束
$ seq 1 5010 | tail 5
5006
5007
5008
5009
5010
但是我需要显示前 5 个和后 5 个以及中间的省略号...所以输出可能看起来像
1
2
3
4
5
...
5006
5007
5008
5009
5010
我需要在一个单行的股票 bash 中执行此操作。那可能吗?怎么样?
【问题讨论】:
-
head -n 5 file; echo ...; tail -n 5 file但是,更严重的是,使用 awk,打印前五行,保留五行的滑动窗口并在最后打印出来。 -
file.txt只有 10 行或更少行时,你想要什么输出? -
该文件将始终超过 10 行。我通过标准输出获取输入,无法直接访问文件。
-
@Schneems:请将该信息编辑到您的问题中。这是一个重要的说明,因此不应在评论中。
-
@EtanReisner:顺便说一下,
head不能保证只读取请求的行数,这意味着head -n5;可能会吸收超过五行的内容。试试seq 1862。