Jonction de lignes txt

Le
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 ) 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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Vivien MOREAU
Le #22944701
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
Patrick Texier
Le #22945021
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
Benoit Izac
Le #22945601
Bonjour,

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

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
Hector Gafouin
Le #22946511
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
Hector Gafouin
Le #22946501
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
Publicité
Poster une réponse
Anonyme