Forcer un retour à la ligne à 80caractères sur un lot de fichiers

Bonjour,

j’ai plus d’une centaine de fichiers non ou mal formatés (copie de courriels html dans Firefox) et je dois raccourcir toutes les lignes trop longues dans tous les fichiers, en intégrant un saut de ligne.
Je suppose qu’il faut utiliser sed pour imposer une caractère de saut de ligne, par exemple à la 80e colonne?
Pourriez-vous m’orienter ?

1- Comment désigner le 80e caractère dans une commande de substitution?
2- Comment s’écrit le caractère nouvelle ligne dans cette même commande?

sed 's#\(.\{80\}\)#\1\n#g'

.\{80\} signifie 80 caractères enregistrrés dans \1 à qui on rajoute \n ( un saut de ligne )

1 J'aime

Pourquoi? pour les visionner tu utilises quel logiciel? car il est assez courant d’avoir une fonction de wrap.

Merci dindoun, c’est exactement ça

Ces textes sont intégrés tel quel dans un environnement verbatim d’un document LaTeX, par la commande \verbatiminput qui ne coupe pas les lignes trop longues (fournie par l’extension verbatim).

Il s’agir de produire un très long document de travail, non publiable, pour lire une longue correspondance entre 2 personnes (+citations d’autres correspondants), y compris des documents joints (pdf essentiellement), afin d’en permettre une relecture rapide, «en diagonale», dans un même temps.

Il y a certainement d’autres techniques, peut-être plus performantes, mais je maîtrise assez bien l’outils LaTeX (XeLaTeX), et très peu les (autres) langages de programmation.

Merci pour votre intérêt à ma question.

1 J'aime

Bonjour @josephtux ,

Voici un extrait de l’un de mes fichiers source LaTeX qui devrait te servir de base et qui pourrait très certainement t’éviter d’écrire un script :

\usepackage{listings}
\lstset {
language=bash,
basicstyle=\footnotesize,
numbers=left,
stepnumber=1,
showstringspaces=false,
tabsize=1,
breaklines=true,
breakatwhitespace=false
}
...
\begin{lstlisting}
Contenu de l'email devant recevoir des retours à la  ligne automatiquement
\end{lstlisting}

Merci vbreton,
Mais comment mettre le contenu de chaque fichier dans cet environnement? (il existe \verbatiminput mais existe-t-il une sorte de \lstlistinginput?).
Autrement dit, mon problème est d’intégrer automatiquement le contenu d’un grand nombre de fichiers.

Il y a bien la possibilité de concaténer l’ensemble avec cat, mais si j’envisage la solution LaTeX, c’est afin de pouvoir séparer chaque fichier (en le titrant avec \newrobustcmd{\Mypg}[1]{\pagebreak \paragraph{#1}} )

Et puis, il faut bien admettre que LaTeX est pour moi un jouet addictif…

fmt ou fold ?

en tout cas, sed c’est pas le plus intuitif.

en cherchant un peu sur un moteur de recherche : text processing - How to break string into N 80 character lines? - Ask Ubuntu

1 J'aime

:smiling_face_with_three_hearts:
La trousse à outils GNU Linux est vraiment riche. Merci pour la visite!

Néanmoins, avec ma trousse de bricoleurs moins bien achalandée (mémoire de Shadok: Ga+Bu+Zo+Meu) je suis tout de même content d’avoir quelques outils disponibles multiusages (il m’arrive d’enfoncer un clou avec le manche du tourne-vis, si ça fait gagner du temps sans craindre pour le clou, le mur ni le manche). Mais quand on me révèle et passe le marteau, je ne peux qu’apprécier l’aide à sa juste valeur.

Bonsoir @josephtux ,

Regarde le dernier exemple de https://tex.stackexchange.com/questions/13921/inputting-multiple-files-in-latex pour traiter plusieurs fichiers en bash au sein d’un document LaTeX.

En faisant un peu de Python, ce lien devrait aussi t’intéresser : https://jeltef.github.io/PyLaTeX/current/.