Utilisez cet outil Unix astucieux pour traiter du texte sous Linux

Unix a toujours excellé dans le traitement de texte, et Linux n’est pas différent. Et les outils pour travailler avec et transformer les fichiers texte existent toujours sur tous les systèmes Linux.
Comme d’autres systèmes informatiques, les premiers Unix imprimaient sur papier, en utilisant un dispositif d’impression de type machine à écrire. Ces imprimantes offraient des options de formatage limitées, mais avec une application intelligente des outils Unix, vous pouviez préparer des documents d’aspect professionnel.
L’un de ces outils était le pr
outil, pour préparer des documents texte pour l’impression. Explorons comment utiliser les outils Unix standard, tels que le pr
processeur et le fmt
formateur de texte, pour préparer les fichiers texte à imprimer sur une imprimante de type machine à écrire.
[ Read also: How I use the Linux fmt command to format text ]
Contents
Impression d’un fichier texte brut
Disons que nous voulions imprimer la licence MIT, stockée dans un fichier appelé mit.txt. Ce fichier est déjà formaté pour un affichage optimal à l’écran ; les lignes font près de 80 colonnes de large, ce qui convient bien à un terminal standard.
$ cat mit.txt
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
(Jim Hall, CC BY-SA 40)
Le papier de l’imprimante a également une largeur de 80 colonnes, du moins sur les imprimantes classiques. Nous pouvons donc également imprimer le fichier sur notre imprimante à l’aide d’une commande telle que lpr
. Mais ce n’est pas une façon très intéressante d’imprimer le fichier, et ce ne sera pas très agréable à lire. Par exemple, le document commencera sur la première ligne de la page imprimée, et immédiatement sur le bord gauche du papier.
Nous pouvons rendre le document plus facile à lire en utilisant le pr
commande pour ajouter une marge supérieure. Par défaut, pr
inclut la date et l’heure, le nom du fichier et le numéro de page dans l’en-tête supérieur. Par exemple, le haut de notre fichier pourrait ressembler à ceci :
$ pr mit.txt | head
2022-06-24 18:27 mit.txt Page 1
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
Dans cet exemple, j’ai utilisé le head
commande pour ne regarder que les dix premières lignes de la pr
production. La pr
La commande ajoute également des lignes vierges supplémentaires au bas de la page, pour fournir une marge inférieure. Les imprimantes à écrire à l’ancienne utilisaient 66 lignes par page, de sorte que le pr
la sortie suppose cela aussi. Mais ce fichier s’imprime sur une page, donc je n’ai pas besoin de montrer le bas du fichier ; c’est juste quelques lignes vides.
Ajout d’une marge gauche et droite
L’ajout de la marge supérieure facilite la lecture du document, mais nous pouvons faire mieux en ajoutant de l’espace à gauche et à droite de la page imprimée. Cela ajoute effectivement une marge gauche et droite à notre document.
La première étape consiste à utiliser le fmt
commande pour reformater le fichier texte à une largeur différente. Utilisant fmt -w 70
reformate le fichier texte pour utiliser des lignes de 70 colonnes de large. Nous pouvons ajouter un espace vide à gauche du document pour créer une marge de gauche. Utilisant pr -o 5
ajoute 5 espaces au début de chaque ligne de la sortie. Avec le texte plus étroit, nous aurons également environ 5 espaces dans la marge de droite.
$ fmt -w 70 mit.txt | pr -o 5 | head
2022-06-24 18:35 Page 1
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
C’est ainsi que les utilisateurs d’Unix imprimaient des fichiers en texte brut. Vous pouvez utiliser le même ensemble de commandes pour imprimer des fichiers texte sur une imprimante laser moderne, mais votre imprimante peut attendre un flux de page commande au lieu d’utiliser des lignes vides. Pour ce faire, ajoutez le -f
l’option à la pr
commande, comme ceci :
$ fmt -w 70 mit.txt | pr -f -o 5 | lpr
je vais omettre le -f
dans la suite de cet article, mais n’oubliez pas d’ajouter -f
au pr
commande si vous souhaitez imprimer des documents sur une imprimante laser moderne.
Modification de l’en-tête
Vous remarquerez peut-être que lorsque nous redirigeons la sortie de fmt
au pr
commande, le pr
la sortie n’affiche plus le nom du fichier. C’est parce que lorsque nous enchaînons plusieurs commandes ensemble comme ceci, le pr
commande ne connaît pas le nom du fichier, il est donc laissé vide. Nous pouvons ajouter le nom du fichier à l’en-tête en utilisant le -h
option:
$ fmt -w 70 mit.txt | pr -h 'mit.txt' -o 5 | head
2022-06-24 18:45 mit.txt Page 1
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
Vous pouvez apporter d’autres modifications à l’en-tête, telles que l’option -D pour modifier le format de la date et de l’heure, ou le remplacer par un nouveau texte.
$ fmt -w 70 mit.txt | pr -D '6/24/2022' -h 'mit.txt' -o 5 | head -30
6/24/2022 mit.txt Page 1
Copyright (c) <year> <copyright holders>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject
to the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Imprimer deux colonnes
Et si vous vouliez donner à un document texte une apparence vraiment élégante sur la page imprimée ? Certains documents tels que les articles techniques peuvent devoir être imprimés dans une mise en page à deux colonnes. La pr
La commande peut imprimer du texte dans plusieurs colonnes. Par exemple, -2
imprime sur deux colonnes et -3 imprimera sur trois colonnes.
Cependant, soyez prudent lorsque vous imprimez du texte sur plusieurs colonnes. Si les lignes sont trop longues, pr
peut simplement chevaucher une colonne avec une autre, perdant ainsi du texte dans la sortie. Mais nous pouvons tirer parti de la fmt
commande pour reformater le texte à une largeur plus étroite, adaptée à l’impression au format deux colonnes.
Faisons le calcul : si la page imprimée a une largeur de 80 colonnes et que nous avons laissé 5 espaces à gauche et à droite comme marges de page, cela laisse 70 colonnes pour notre texte. Utilisant fmt -w 35
couperait le texte proprement en deux pour deux colonnes, mais nous ne laisserions peut-être pas beaucoup d’espace entre les colonnes. Utilisons plutôt fmt -w 33
pour reformater la largeur du texte à 33 avant d’envoyer la sortie au pr
commande:
$ fmt -w 33 mit.txt | pr -2 -D '6/24/2022' -h 'mit.txt' -o 5 | head -30
6/24/2022 mit.txt Page 1
Copyright (c) <year> <copyright be included in all copies or
holders> substantial portions of the
Software.
Permission is hereby granted,
free of charge, to any person THE SOFTWARE IS PROVIDED
obtaining a copy of this "AS IS", WITHOUT WARRANTY OF
software and associated ANY KIND, EXPRESS OR IMPLIED,
documentation files (the INCLUDING BUT NOT LIMITED TO THE
"Software"), to deal in the WARRANTIES OF MERCHANTABILITY,
Software without restriction, FITNESS FOR A PARTICULAR PURPOSE
including without limitation the AND NONINFRINGEMENT. IN NO
rights to use, copy, modify, EVENT SHALL THE AUTHORS OR
merge, publish, distribute, COPYRIGHT HOLDERS BE LIABLE
sublicense, and/or sell copies FOR ANY CLAIM, DAMAGES OR OTHER
of the Software, and to permit LIABILITY, WHETHER IN AN ACTION
persons to whom the Software is OF CONTRACT, TORT OR OTHERWISE,
furnished to do so, subject to ARISING FROM, OUT OF OR IN
the following conditions: CONNECTION WITH THE SOFTWARE
OR THE USE OR OTHER DEALINGS IN
The above copyright notice and THE SOFTWARE.
this permission notice shall
$
Unix est une excellente plate-forme pour le traitement de texte. Alors que nous utilisons d’autres outils aujourd’hui, y compris HTML dans les navigateurs Web et PDF pour le contenu imprimable, il est bon de savoir comment utiliser les outils Unix existants pour créer des documents professionnels en texte brut.