Head - Tail - Tutoriel linux

Mise à jour : Debian Bullseye 11.2

Sommaire

1 - head

1.1 - Affichage des premières lignes d'un fichier

$ rm -f file; for i in {1..100}; do echo "*** $i">>file; done

$ cat file
*** 1
*** 2
*** 3
...

*** 97
*** 98
*** 99
*** 100
$ head file
*** 1
*** 2
*** 3
*** 4
*** 5
*** 6
*** 7
*** 8
*** 9
*** 10
$ head -3 file
*** 1
*** 2
*** 3

$ N=3
$ head -n $N file
*** 1
*** 2
*** 3
$ head -n -98 file
*** 1
*** 2


$ N=98
$ head -n -$N file
*** 1
*** 2

1.2 - Affichage des premiers octets d'un fichier

b 512 
K 1024
M 1024*1024
G 1024x1024x1024
...
KB 1000
MB 1000x1000
GB 100x1000x1000
$ echo -n 0123456789ABCDEF0123456789ABCDEF >file

$ hexdump -C file
00000000 30 31 32 33 34 35 36 37 38 39 41 42 43 44 45 46 |0123456789ABCDEF|
*
00000020
$ head -c 10 file
0123456789$

$ N=10
head -c $N file
0123456789$
 head -c -24 file
01234567

2 - Tail

2.1 - Affichage des dernières lignes d'un fichier

$ tail file
*** 91
*** 92
*** 93
*** 94
*** 95
*** 96
*** 97
*** 98
*** 99
*** 100
$ tail -n 3 file
*** 98
*** 99
*** 100
 tail -n +96 file
*** 96
*** 97
*** 98
*** 99
*** 100
$ sudo tail -f /var/log/daemon.log
$ sudo watch tail -n 5 /var/log/messages

2.2 - Affichage des derniers octets d'un fichier

$ cat file
0123456789ABCDEF0123456789ABCDEF
$ tail -c 2 file
EF
$ tail -c +1 file
0123456789ABCDEF0123456789ABCDEF$
$ tail -c +31 file
EF
$ sudo tail -c +513 /dev/sda |hexdump -C
...

3 - Combinaison head - tail

3.1 - Affichage des lignes comprises entre deux numéros de ligne

$ head -n 50 file
*** 1
*** 2
*** 3
...

*** 49
$ head -n 50 file |tail -n +44
*** 44
*** 45
*** 46
*** 47
*** 48
*** 49
*** 50

3.2 - Affichage de N lignes à partir d'un numéro de ligne
de N lignes à partir d'un numéro de ligne

$ tail -n +44 file
*** 44
*** 45
*** 46
...

*** 99
*** 100
$ tail -n +44 file |head -n 6
*** 44
*** 45
*** 46
*** 47
*** 48
*** 49
*** 50

3.3 - Affichage des octets

$ head -c 16 file |tail -c +10
9ABCDEF
$ Affichage -c +10 |head -c 7
9ABCDEF