在Unix中如何在头部和尾部之间添加换行符?
在下面的Unix命令(我在zsh中)中,为了便于阅读,我希望在长文本文件的在Unix中如何在头部和尾部之间添加换行符?,unix,zsh,Unix,Zsh,在下面的Unix命令(我在zsh中)中,为了便于阅读,我希望在长文本文件的头和尾之间出现一个空行 命令如下: cat LongTextFile.txt | tee >(head) >(tail) >/dev/null 我已经知道了 (head; echo; tail) < LongTextFile.txt (head;echo;tail)(头)>(尾)未排序;它们并行运行头和尾同时运行tee正在读取其标准输入并将其分发给这两个进程。因此,没有“他们之间”的概念,我们可
头
和尾
之间出现一个空行
命令如下:
cat LongTextFile.txt | tee >(head) >(tail) >/dev/null
我已经知道了
(head; echo; tail) < LongTextFile.txt
(head;echo;tail)
但是我想知道是否可以使用
tee
命令。给你,这在Zsh中有效:
print -l "$(head LongTextFile.txt)" '' "$(tail LongTextFile.txt)"
给你,这在Zsh中起作用:
print -l "$(head LongTextFile.txt)" '' "$(tail LongTextFile.txt)"
过程替换
>(头)>(尾)
未排序;它们并行运行<代码>头和尾
同时运行tee
正在读取其标准输入并将其分发给这两个进程。因此,没有“他们之间”的概念,我们可以在其中插入新行
幸运的是,当文件足够长时,head
有机会在tail
开始输出任何内容之前完成
如果文件太小以至于头和尾重叠,则可能会得到交错输出或重新排序的输出,具体取决于正在进行的确切缓冲。进程替换
>(头)>(尾)
;它们并行运行<代码>头和尾
同时运行tee
正在读取其标准输入并将其分发给这两个进程。因此,没有“他们之间”的概念,我们可以在其中插入新行
幸运的是,当文件足够长时,head
有机会在tail
开始输出任何内容之前完成
如果文件太小以至于头和尾重叠,则可能会得到交错输出或重新排序输出,具体取决于正在进行的确切缓冲。尝试:
seq 100{s=$(cat);head试试:
seq 100{s=$(cat);head如果你不打算输出到一个文件?为什么要使用tee?@Raman Sailopal我不知道我一定需要。我只是在学习UNIX,想知道管道操作符是否可以用来显示一个长文件的头和尾,中间有一个空行。这似乎是一件简单的事情,但我无法让它工作。两者都>(head)
和>(tail)
是异步执行的。不能保证(尽管很可能)您甚至会首先得到头的输出。请注意(头;回波;尾)
也不是绝对安全的,因为head
会消耗比它需要输出的更多的输入行,可能会消耗你想要的tail
输入。@RamanSailopal,因为tee
不仅仅输出到一个文件;它输出到一个或多个文件,这些文件可以有效地被Bash进程替换。如果你我们不打算输出到文件?为什么要使用tee?@Raman Sailopal我不知道我必须这样做。我只是在学习UNIX,想知道管道操作符是否可以用来显示长文件的开头和结尾,中间有一个空行。这似乎很简单,但我无法让它工作。两者都>(head)
和>(tail)
是异步执行的。不能保证(尽管很可能)您甚至会首先得到头的输出。请注意(头;回波;尾)
也不是绝对安全的,因为head
会消耗比它需要输出的更多的输入行,可能会消耗你想要的tail
输入。@RamanSailopal,因为tee
不仅仅输出到一个文件;它输出到一个或多个文件,这些文件可以有效地被Bash进程替换。@MarionR我非常感谢您的回答,但我一直在寻找一个使用管道的命令。@mark cowan为什么?我只是在学习UNIX,正在测试管道操作符可以做什么。我已经记下了您的替代解决方案供将来参考。谢谢。@MarionRichert感谢您的回答,但我正在寻找一个使用管道的命令@mark cowan为什么?我只是在学习UNIX,正在测试管道操作员可以做什么。我已经记下了您的替代解决方案,以供将来参考。谢谢。这并不是问题的答案。若要评论或要求作者澄清,请在他们的帖子下方留下评论。-这不提供answe回答问题。若要评论或要求作者澄清,请在其帖子下方留下评论-