我们在先前的文章中多次提到过 head 命令,它是在 Linux 终端中查看文本文件的一种方式,我们可以使用 head 命令从文件的开始部分打印指定行数的内容。
它的语法结构如下所示:
今天我们通过例子就 head 命令介绍一些实际工作中可能会用到的知识。
关于 head 命令的一些例子
作为演示,我们使用如下内容的文本文件:
The Mysterious Affair at Styles
The Secret Adversary
The Murder on the Links
The Man in the Brown Suit
The Secret of Chimneys
The Murder of Roger Ackroyd
The Big Four
The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies
Murder on the Orient Express
Unfinished Portrait
Why Didn't They Ask Evans?
Three Act Tragedy
Death in the Clouds
首先,在不使用任何选项的情况下,使用 head 命令查看文本文件,默认会显示文件的前 10 行内容,如下所示:
$ head tiap.txt
The Mysterious Affair at Styles
The Secret Adversary
The Murder on the Links
The Man in the Brown Suit
The Secret of Chimneys
The Murder of Roger Ackroyd
The Big Four
The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
当然如果文件内容不足 10 行,那么就会显示整个文件的内容。
使用 head 命令打印文件前 n 行
使用 head 命令,打印文件的前 n 行,需要使用选项 -n,后面跟一个行数。比如,要打印文件多大前 3 行,可使用如下命令:
$ head -n 3 tiap.txt
The Mysterious Affair at Styles
The Secret Adversary
The Murder on the Links
打印除了最后 n 行以外所有的内容
上面例子中,行数如果为负值,比如 -3,那么就会打印除了最后 3 行以外所有的内容,如下所示:
$ head -n -3 agatha.txt
The Mysterious Affair at Styles
The Secret Adversary
The Murder on the Links
The Man in the Brown Suit
The Secret of Chimneys
The Murder of Roger Ackroyd
The Big Four
The Mystery of the Blue Train
The Seven Dials Mystery
The Murder at the Vicarage
Giant's Bread
The Floating Admiral
The Sittaford Mystery
Peril at End House
Lord Edgware Dies
Murder on the Orient Express
Unfinished Portrait
使用 head 命令打印多个文件
使用 head 命令可以同时查看多个文件,语法如下:
head -n N file1 file2 file3
比如,有两个文件,想要同时查看这两个文件的前两行,如下命令:
$ head -n 2 tiap.txt sherlock.txt
==> tiap.txt <==
The Mysterious Affair at Styles
The Secret Adversary
==> sherlock.txt <==
A Scandal in Bohemia
The Red-Headed League
如上面例子中的输出所示,每个文件的输出都会使用 =>filename<== 分隔。
处理输出中的头信息
上面的例子,其输出中带有文件名来分割不同文件的内容,如果不想看到这个分割信息(文件头信息),可以使用 -q 选项(quiet 模式)将头信息省略掉:
$ head -q -n 2 tiap.txt sherlock.txt
The Mysterious Affair at Styles
The Secret Adversary
A Scandal in Bohemia
The Red-Headed League
另外一个问题,你可能也注意到了,就是在打印单个文件的时候,其输出中是不带文件头信息的,可以使用 -v 选项强制让其打印文件名,如下所示:
$ head -v -n 2 tiap.txt
==> tiap.txt <==
The Mysterious Affair at Styles
The Secret Adversary
打印指定大小的字节/字符数
使用 head 命令还可以打印指定字节数的内容,使用 -c 选项来实现,后面跟字节数。
一般来说,一个字符的大小就是一个字节,所以也可以把它当作是打印一定数量的字符数。如下:
与行数类似,使用 -c 选项后面指定一个负数,可以打印除了最后指定数量的字符以外其他的所有内容,如下所示:
使用 head 和 tail 命令组合,打印文件的指定几行
前面我们介绍过一篇文章,如何在 Linux 命令行中显示某个文件中指定的几行文字
介绍了使用 head 命令和 tail 命令打印文件中的指定几行内容,大家感兴趣可以去看一下。