31

このコマンドは、ファイルの2行目を表示します。

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は最初の2行を印刷し、テール-1は最後の行を印刷するのですが、どうして2行目が印刷されるのでしょうか!! ???

4

3 に答える 3

31

「sed」または「awk」を使用して、特定の行を印刷することもできます。

例:

sed -n '2p' myfile

PS:「私の「head|tail」コマンドの何が問題になっていますか」について-shelltelは正しいです。

于 2012-12-12T04:43:14.410 に答える
18

tailはヘッド出力の最後の行を表示し、ヘッド出力の最後の行はファイルの2行目です。

ヘッドの出力(テールへの入力):

hello
mark

テールの出力:

mark
于 2012-12-12T04:40:10.583 に答える
1

操作を別々のコマンドに分割すると、なぜそれが機能するのかが明らかになります。

head -2は、2行のファイルを作成します。

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

tail -1は、ファイルの最後の行を出力します。

linux> tail -1 /tmp/xx
mark
于 2012-12-12T04:49:08.980 に答える