Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Jonction de lignes txt

5 réponses
Avatar
Hector Gafouin
Bonjour,

Je ne m'y connais pas beaucoup en programmation et j'aurais besoin
d'une aide pour le traitement d'un fichier texte.
Je dispose d'un fichier txt comportant des retours à la ligne (CR et/ou
LF, et/ou \n) et je souhaiterais concaténer/joindre toutes les lignes,
mettre une espace à chaque jonction et de garder les lignes vides
telles quelles.

-------
Exemple:
-------

--Entree.txt--

ABCDE FGH IJ
KLMNOP QRST UV
WXYZ

abcd efgh

ij klmnopq
rstuvwx yz

12345
67
8

9

--Sortie.txt--

ABCDE FGH IJ KLMNOP QRST UV WXYZ

abcd efgh

ij klmnopq rstuvwx yz

12345 67 8

9

--------

J'ai pensé que Perl pourrais permettre de réaliser ces opérations.
Je suis aussi preneur de script bash ou Vim.
Je vous remercie par avance de toute aide que vous pourrez
m'apporter.

Salutations,

--
]-[ector

5 réponses

Avatar
Vivien MOREAU
On 2010-12-20, Hector Gafouin wrote:

Je ne m'y connais pas beaucoup en programmation et j'aurais besoin
d'une aide pour le traitement d'un fichier texte.
Je dispose d'un fichier txt comportant des retours à la ligne (CR et/ou
LF, et/ou n) et je souhaiterais concaténer/joindre toutes les lignes,
mettre une espace à chaque jonction et de garder les lignes vides
telles quelles.



Ton problème se résume donc à chercher les retours à la ligne
dans ton fichier et à les remplacer par une espace.

C'est donc du Perl de base. Quel est ton problème exact, peut-on
voir ce que tu as déjà écrit ? :-)

--
Message envoyé depuis mon iMug
Avatar
Patrick Texier
Le 20 Dec 2010 13:44:13 +0100, Hector Gafouin a écrit :

J'ai pensé que Perl pourrais permettre de réaliser ces opérations.
Je suis aussi preneur de script bash ou Vim.



C'est la fonction gw de Vim.

:set tw000000
gggwG
--
Patrick Texier

vim:syntax=mail:ai:ts=4:et:twr
Avatar
Benoit Izac
Bonjour,

le 20/12/2010 à 13:44, Hector Gafouin a écrit dans le message
<4d0f4f9d$ :

Je dispose d'un fichier txt comportant des retours à la ligne (CR et/ou
LF, et/ou n) et je souhaiterais concaténer/joindre toutes les lignes,
mettre une espace à chaque jonction et de garder les lignes vides
telles quelles.

-------
Exemple:
-------

--Entree.txt--

ABCDE FGH IJ
KLMNOP QRST UV
WXYZ

abcd efgh

ij klmnopq
rstuvwx yz

12345
67
8

9

--Sortie.txt--

ABCDE FGH IJ KLMNOP QRST UV WXYZ

abcd efgh

ij klmnopq rstuvwx yz

12345 67 8

9

--------

J'ai pensé que Perl pourrais permettre de réaliser ces opérations.



#!/usr/bin/perl

use strict;
use warnings;

{
local $/ = "";
while (<DATA>) {
s/n+(?!$)/ /g;
s/(S)s+(S)/$1 $2/g;
# pas sûr que ce soit vraiment ce que tu veux
s/^s+// if $. == 1;
print;
}
}

__DATA__
ABCDE FGH IJ
KLMNOP QRST UV
WXYZ

abcd efgh

ij klmnopq
rstuvwx yz

12345
67
8

9

--
Benoit Izac
Avatar
Hector Gafouin
Benoit Izac tapota :

while (<DATA>) {
s/n+(?!$)/ /g;
s/(S)s+(S)/$1 $2/g;
# pas sûr que ce soit vraiment ce que tu veux
s/^s+// if $. == 1;
print;
}
}




Merci beaucoup pour votre aide, cela me permet d'amorcer mon code.

Salutations,

--
]-[ector
Avatar
Hector Gafouin
Patrick Texier tapota :
Le 20 Dec 2010 13:44:13 +0100, Hector Gafouin a écrit :

C'est la fonction gw de Vim.




Merci de votre aide, en me basant sur Vim (désolé c'est HS sur ce
groupe) j'ai pu obtenir le résultat escompté :

:%s/n/chaine_tempo/g | %s/chaine_tempochaine_tempo/rr/g | %s/chaine_tempo/ /g

Salutations,

--
]-[ector