Linux 中的 head 命令及示例
它是 Tail 命令的补充。 head 命令,顾名思义,打印给定输入的前 N 个数据。默认情况下,它打印指定文件的前 10 行。如果提供了多个文件名,则每个文件中的数据都以文件名开头。
句法:
head [OPTION]... [FILE]...
让我们考虑两个名称为state.txt和capital.txt的文件分别包含印度各州和首都的所有名称。
$ cat state.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
Goa
Gujarat
Haryana
Himachal Pradesh
Jammu and Kashmir
Jharkhand
Karnataka
Kerala
Madhya Pradesh
Maharashtra
Manipur
Meghalaya
Mizoram
Nagaland
Odisha
Punjab
Rajasthan
Sikkim
Tamil Nadu
Telangana
Tripura
Uttar Pradesh
Uttarakhand
West Bengal
$ cat capital.txt
Hyderabad
Itanagar
Dispur
Patna
Raipur
Panaji
Gandhinagar
Chandigarh
Shimla
Srinagar
如果没有任何选项,它只显示指定文件的前 10 行。
例子:
$ head state.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
Goa
Gujarat
Haryana
Himachal Pradesh
Jammu and Kashmir
选项
1. -n num:打印前 'num' 行而不是前 10 行。 num必须在命令中指定,否则会显示错误。
$ head -n 5 state.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
2. -c num:打印指定文件的前“num”个字节。换行计为单个字符,因此如果 head 打印出换行符,它将计为一个字节。 num必须在命令中指定,否则会显示错误。
$ head -c 6 state.txt
Andhra
3. -q:如果给出超过 1 个文件,则使用它。由于此命令,来自每个文件的数据不以文件名开头。
Without using -q option
$ head state.txt capital.txt
==> state.txt <==
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
Goa
Gujarat
Haryana
Himachal Pradesh
Jammu and Kashmir
==> capital.txt <==
Hyderabad
Itanagar
Dispur
Patna
Raipur
Panaji
Gandhinagar
Chandigarh
Shimla
Srinagar
With using -q option
$ head -q state.txt capital.txt
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
Goa
Gujarat
Haryana
Himachal Pradesh
Jammu and Kashmir
Hyderabad
Itanagar
Dispur
Patna
Raipur
Panaji
Gandhinagar
Chandigarh
Shimla
Srinagar
4. -v:通过使用这个选项,来自指定文件的数据总是以它的文件名开头。
$ head -v state.txt
==> state.txt <==
Andhra Pradesh
Arunachal Pradesh
Assam
Bihar
Chhattisgarh
Goa
Gujarat
Haryana
Himachal Pradesh
Jammu and Kashmir
head 命令的应用
- 打印 M 行和 N 行之间的行(M>N):为此,我们使用 head、tail 和 pipeline(|) 命令。命令是: head -M file_name | tail +N因为 head 命令占用前 M 行,并且从 M 行 tail 命令从 +N 到末尾剪切行,我们也可以使用head -M file_name | tail +(M-N+1)命令,因为 head 命令占用前 M 行,并且从 M 行 tail 命令从末尾开始剪切 (M-N+1) 行。假设从 state.txt 文件中我们必须打印 10 到 20 之间的行。
$ head -n 20 state.txt | tail -10
Jharkhand
Karnataka
Kerala
Madhya Pradesh
Maharashtra
Manipur
Meghalaya
Mizoram
Nagaland
Odisha
- 如何将 head 与 pipeline(|) 一起使用: head 命令可以与其他命令一起使用管道。在以下示例中,ls 命令的输出通过管道传送到 head 以仅显示三个最近修改的文件或文件夹。
Display all recently modified or recently used files.
$ ls -t
e.txt
d.txt
c.txt
b.txt
a.txt
Cut three most recently used file.
$ ls -t | head -n 3
e.txt
d.txt
c.txt
- 它也可以通过管道与一个或多个过滤器一起进行额外处理。例如,排序过滤器可用于按字母顺序对三个最近使用的文件或文件夹进行排序。
$ ls -t | head -n 3 | sort
c.txt
d.txt
e.txt
- 还有许多其他过滤器或命令,我们使用 head 命令。主要用于查看 Unix 中巨大的日志文件。