如何在 Unix 中的头和尾之间添加换行符?

How can I add a newline in between head and tail in Unix?

在下面的 Unix 命令中(我在 zsh 中),为了便于阅读,我希望在长文本文件的 headtail 之间出现一个空行。

命令如下:

cat LongTextFile.txt | tee >(head) >(tail) >/dev/null

我已经知道了

(head; echo; tail) < LongTextFile.txt

但我想知道是否可以使用 tee 命令。

给你,这在 Zsh 中有效:

print -l "$(head LongTextFile.txt)" '' "$(tail LongTextFile.txt)"

进程替换 >(head) >(tail) 未排序;他们 运行 并行。 headtail 同时 运行ning。 tee 正在读取其标准输入并将其分发给这两个进程。所以不存在我们可以插入换行符的“它们之间”的概念。

你很幸运,当文件足够长时,head 有机会在 tail 开始输出任何内容之前完成。

如果文件太小以至于 headtail 重叠,您可能会得到交错输出或重新排序的输出,具体取决于正在进行的确切缓冲。

尝试:

seq 100 | { s=$(cat); head <<<$s; echo; tail <<<$s; }