2012-12-12 39 views
8

此命令显示该文件的第二行:UNIX的显示文件的第二行

cat myfile | head -2 | tail -1 

我的文件包含以下数据:

hello 
mark 
this is the head line 
this is the first line 
this is the second line 
this is the last line 

上面的命令打印数据作为:mark

但是我无法理解这个,因为头-2用于打印前两行,而尾-1打印最后一行但打印第二行的方式是怎样的!! ???

+4

tail只在head的输出上运行,'tail -1'表示打印最后一行输出。在这种情况下(在管道中),“tail”不知道myfile存在。您的管线按设计工作,您观察的内容被认为是一项功能! ;-)。祝你好运。 – shellter

回答

8

尾显示头输出的最后一行和头部输出的最后一行是该文件的第二行。 (输入到尾)

输出头的:

hello 
mark 

尾的输出:

mark 
10

。也可以使用 “sed的” 或 “AWK” 打印特定行:

示例:

sed -n '2p' myfile 

PS: 至于“我的'尾巴''命令有什么问题 - shelltel是正确的。

+5

好的sed。为了提高大文件的效率,我建议使用''2p; 3q''或'2 {p; q;}'或类似的。 – pilcrow

2

如果将操作分解为单独的命令,它将变得很明显,它为什么会以它的工作方式工作。

head -2创建两行文件。

linux> head -2 /tmp/x > /tmp/xx 
linux> cat /tmp/xx 
hello 
mark 

tail -1打印出文件的最后一行。

linux> tail -1 /tmp/xx 
mark