Ce n'est pas quelque chose grep
. Le nom "grep" lui-même est un acronyme pour " rechercher globalement une expression régulière et imprimer", ce que fait la ed
commande g/re/p
(pour une expression régulière donnée re
).
ed
est un éditeur de ligne interactif de 1969, mais il est probablement installé sur votre système aujourd'hui. Nous venons grep
de ed
, et cela peut être vu comme un raccourci ou un alias pour une fonctionnalité spécifique de ed
, et sed
, qui est "stream- ed
", c'est-à-dire un éditeur de flux (non interactif).
Utilisons à la sed
place:
$ sed -n '1p' file.txt
La 1p
chaîne est un minuscule sed
"script" qui affiche ( p
) la ligne correspondant à l'adresse donnée ( 1
, la première ligne). La commande d'édition 1p
ferait (sans surprise) la même chose dans l' ed
éditeur d'ailleurs.
Le -n
supprime la sortie de tout ce qui n'est pas explicitement imprimé par le script, donc tout ce que nous obtenons est la première ligne du fichier file.txt
.
Alternativement:
$ sed '1q' file.txt
Cela imprime toutes les lignes du fichier, mais quitte ( q
) à la ligne 1 (après l'avoir imprimé). C'est exactement équivalent à head -n 1 file.txt
.
Dans la norme POSIX, il est dit (généralisation) que head -n N
c'est à peu près la même chose sed 'Nq'
, c'est-à-dire "imprimer chaque ligne, mais quitter à la ligne N
". La raison qui a head
été incluse dans la norme était due à la symétrie avec tail
(et la compatibilité descendante avec les implémentations Unix existantes).
head -1 file.txt
fonctionnerait pas?