Dominique Meeùs
Dernière modification le
retour à la table des matières
— à l’index
— à ma page de départ
cat
, antiword
, catdoc
, more
, less
, head
, tail
sed
)La commande cat
concatène des fichiers, par défaut vers la sortie standard. Par conséquent, appliquer
cat
à un seul fichier texte est la manière simple de lire ce texte dans le terminal.
Si ce n’est pas un fichier texte, il y a cependant des solutions. Antiword lit en texte dans le terminal les anciens fichiers Word de Microsoft : antiword filename.doc
. La commande catdoc
fait de même, mais elle lit aussi les fichiers RTF : catdoc filename.rtf
. (On peut enchaîner ça avec les commandes more
, less
, head
, tail
comme expliqué ci-dessous pour cat
.)
⁂
Si le texte est un peu long, on peut ne pas vouloir tout lire, ou pas tout d’un coup.
Pour couper en pages la sortie de cat
, on chaîner avec less
: cat filename | less
. La barre d’espacement amène la page suivante. (La commande less
fait la même chose que more
et même beaucoup plus, avec des tas d’options que je n’ai pas encore étudiées.)
Pour lire seulement certaines lignes, head
lit les dix premières lignes du fichier. (Pour tout dire, on peut aussi comme avec
cat
, désigner plus d’un fichier et obtenir ainsi les dix premières lignes de chacun.)
Avec head -50 filename
, on a les cinquante premières lignes. La commande tail
fait la même chose à l’envers, en partant de la fin, donc les dix dernières lignes
du fichier ou, avec tail -50 filename
, les cinquante dernières lignes. (Tant dans head -50
que dans tail -50
, le trait d’union marque que 50 est un paramètre ; ce n’est pas (comme on pourrait
le penser surtout avec tail
) écrire « moins cinquante », bien que ça veuille dire (avec tail
, mais pas avec head
) « moins cinquante ».)
Pour atteindre une série de lignes autres que le début ou la fin du fichier, on peut
combiner les deux : head -50 filename | tail -10
donnera les dix dernières de ces cinquante lignes, c’est-à-dire les lignes de 41
à 50.
Des gens plus savants que moi font remarquer que l’ordinateur doit lire les cinquante
premières lignes pour n’en afficher que les dix dernières. Loin dans un gros fichier,
ce pourrait être lent. On obtient la même chose directement avec sed -ne '41,50p' filename
. La source en TEI XML du présent travail fait plus de 13 000 lignes. Le fichier TEI de mes notes de lecture sur le marxisme fait plus de 60 000 lignes. Si quand je contrôle avec jing si je respecte le schéma Relax NG de la TEI, j’apprends qu’il y a une erreur à la
ligne 43567, je peux examiner l’erreur en prenant dix lignes avant et après (pour
repérer où je suis dans mon travail) par sed -ne '43558,43577p' lectures.xml