【发布时间】:2011-12-19 18:45:33
【问题描述】:
如果我有一个包含 3 行文本的文件名 myownfile.txt。
foo
hello world
bar
我想仅使用head 和tail 命令在中间显示hello world 行。
【问题讨论】:
-
文件超过3行怎么办???
如果我有一个包含 3 行文本的文件名 myownfile.txt。
foo
hello world
bar
我想仅使用head 和tail 命令在中间显示hello world 行。
【问题讨论】:
head -2 myownfile | tail -1
应该做你想做的事
【讨论】:
head -2 获取文件的前 两 行。此输出通过管道传输到 tail -1,它获取 管道输出 的最后 one 行(这可能位于文件中间的某个位置)。
head -2 显示文件的前两行
$ head -2 myownfile.txt
foo
hello world
tail -1 显示文件的最后一行:
$ head -2 myownfile.txt | tail -1
hello world
【讨论】:
我在这里聚会有点晚了,但更灵活的方法是使用 awk 而不是使用 head 和 tail。
您的命令如下所示:
awk 'NR==2' myfile.txt
你好世界
【讨论】:
试试head -2 | tail -1。这是前半部分的最后一行 (tail -1) + 一个 (head -2)。
【讨论】:
tail -2 myownfile.txt|head -1
它将显示第二行。
【讨论】:
过去曾发生过一些情况,有人通过sed 为某些文件处理问题提供了大胆的解决方案。我从来没有真正理解它们是如何工作的。
今天我不得不使用基本工具对大文件进行一些行编辑,并遇到了这个问题。不满意tail 和head 的组合我决定了解sed 的真正力量。
阅读https://www.grymoire.com/Unix/Sed.html 为我提供了我需要的所有信息。因此,我想与其他可能偶然发现类似问题但不知道sed 真正强大功能的人分享:
sed -n "2 p" myownfile.txt
-n 选项禁用所有隐式打印,2 仅寻址第二行,p 将该特定行打印到标准输出。
【讨论】: