Discussion:
Jonction de lignes txt
(trop ancien pour répondre)
Hector Gafouin
2010-12-20 12:44:13 UTC
Permalink
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
Vivien MOREAU
2010-12-20 16:05:51 UTC
Permalink
Post by Hector Gafouin
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
2010-12-20 17:54:37 UTC
Permalink
Post by Hector Gafouin
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 tw=10000000
gggwG
--
Patrick Texier

vim:syntax=mail:ai:ts=4:et:tw=72
Hector Gafouin
2010-12-21 07:31:36 UTC
Permalink
Post by Patrick Texier
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/\r\r/g | %s/chaine_tempo/ /g

Salutations,
--
]-[ector
Benoit Izac
2010-12-20 21:04:06 UTC
Permalink
Bonjour,

le 20/12/2010 à 13:44, Hector Gafouin a écrit dans le message
Post by Hector Gafouin
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.
-------
-------
--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
2010-12-21 07:29:08 UTC
Permalink
Post by Benoit Izac
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
Continuer la lecture sur narkive:
Loading...