2012-12-12 50 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