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
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

Poser une question


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
C'est la fonction gw de Vim.
:set tw000000
gggwG
--
Patrick Texier
vim:syntax=mail:ai:ts=4:et:twr
le 20/12/2010 à 13:44, Hector Gafouin a écrit dans le message
#!/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
Merci beaucoup pour votre aide, cela me permet d'amorcer mon code.
Salutations,
--
]-[ector
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