Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 13/02/2017, à 11:28

L'Africain

[Résolu] ajout caractères entre \n texte \n

Bonjour,
Je me bat avec sed depuis ce matin pour essayer de mettre les caractère \s1 devant une ligne entouré par deux retours à la ligne, par exemple:

\v 7 Les Benéi Israël fructifient, foisonnent, se multiplient
et se revigorent, fort, fort; la terre se remplit d’eux.
 
La servitude
 
\v 8 Un nouveau roi se lève sur Misraîm, qui n’avait pas connu Iosseph.

devrait me donner :

\v 7 Les Benéi Israël fructifient, foisonnent, se multiplient
et se revigorent, fort, fort; la terre se remplit d’eux.
 
\s1 La servitude
 
\v 8 Un nouveau roi se lève sur Misraîm, qui n’avait pas connu Iosseph.

Seule les lignes entourées par ces deux retours à la ligne et qui ne commencent pas par un \ sont concernées.
Merci pour votre aide!

Dernière modification par L'Africain (Le 13/02/2017, à 17:10)


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#2 Le 13/02/2017, à 12:14

pingouinux

Re : [Résolu] ajout caractères entre \n texte \n

Bonjour,
Voici un script en python qui devrait convenir :

#!/usr/bin/python
import sys, re
fic=sys.argv[1]
def repl(k): return k.group(1)+'\\s1 '+k.group(2)
with open(fic,'r') as f: txt=f.read()
print(re.sub('(\n *\n)([^\][^\n]+\n *\n)',repl,txt)),

À appeler ainsi :

./le_script fichier

Hors ligne

#3 Le 13/02/2017, à 12:29

L'Africain

Re : [Résolu] ajout caractères entre \n texte \n

Merci Pingouinux pour ta réponse. Hélas ça ne fonctionne pas.
Dans le fichier de sortie c'est le même texte. Par contre y a-t-il une option avec python pour travailler directement sur le fichier ? Comme le -i avec sed? parce que j'en ai 75 des fichiers...
Edit :
Je viens de comprendre pourquoi, avant le lf (retour à la ligne il y une espace! Ce qui donne:

\s\n(mon texte)\n\s\n

Mais le symbole de l'espace dans gedit est bizarre c'est un triangle renversé plus grand que le triangle de l'espace insécable.

Dernière modification par L'Africain (Le 13/02/2017, à 12:42)


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#4 Le 13/02/2017, à 12:46

pingouinux

Re : [Résolu] ajout caractères entre \n texte \n

Hélas ça ne fonctionne pas.

Il fonctionne sur ton exemple en #1 :

$ cat fichier
\v 7 Les Benéi Israël fructifient, foisonnent, se multiplient
et se revigorent, fort, fort; la terre se remplit d’eux.
 
La servitude
 
\v 8 Un nouveau roi se lève sur Misraîm, qui n’avait pas connu Iosseph.
$ ./le_script fichier
\v 7 Les Benéi Israël fructifient, foisonnent, se multiplient
et se revigorent, fort, fort; la terre se remplit d’eux.
 
\s1 La servitude
 
\v 8 Un nouveau roi se lève sur Misraîm, qui n’avait pas connu Iosseph.

Peux-tu donner un exemple de fichier qui ne donne pas un résultat correct ?

Par contre y a-t-il une option avec python pour travailler directement sur le fichier ? Comme le -i avec sed? parce que j'en ai 75 des fichiers...

Pour un fichier

./le_script fichier >fichier2 && mv fichier2 fichier

mais personnellement je préfère vérifier le résultat avant d'écraser le fichier d'origine.
On peut aussi faire une boucle sur les 75 fichiers.

Hors ligne

#5 Le 13/02/2017, à 12:52

L'Africain

Re : [Résolu] ajout caractères entre \n texte \n

Désolé, J'ai modifié le post plus haut en même temps que tu me répondais! (Au sujet des espaces). le problème est donc de ce côté là, mais je sais pas comment identifier cette espace!

Dernière modification par L'Africain (Le 13/02/2017, à 13:11)


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#6 Le 13/02/2017, à 13:23

pingouinux

Re : [Résolu] ajout caractères entre \n texte \n

mais je sais pas comment identifier cette espace!

Donne le retour de

hd quelques_lignes_du_fichier_contenant_les_espaces_bizarres

Hors ligne

#7 Le 13/02/2017, à 13:32

L'Africain

Re : [Résolu] ajout caractères entre \n texte \n

Ok voici le retour de la commade hd sur 4 lignes avec deux espace insécables (ce que ça semble être):

 hd gntest 
00000000  c2 a0 0a 4c 61 20 73 65  72 76 69 74 75 64 65 0a  |...La servitude.|
00000010  c2 a0 0a 5c 76 20 38 20  0a 0a 0a                 |...\v 8 ...|
0000001b

Sinon j'ai finalement réussi à les supprimer mais le script python ne modifie toujours pas le fichier.
Edit :
Euh... En fait si, mais pas correctement voici un exemple:

\v 7 Les Benéi Israël fructifient, foisonnent, se multiplient
et se revigorent, fort, fort; la terre se remplit d’eux.

\s1 La servitude

là c'est donc ok mais ailleurs, où il y a des balises avec \ il le fait aussi alors qu'il ne devrait pas :

sa révélation et de sa puissance.\it*

\s1 \c 1

En Misraîm

ici le \s1 devrait être devant En Misraîm et rien devant les balises \c

Dernière modification par L'Africain (Le 13/02/2017, à 13:43)


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#8 Le 13/02/2017, à 13:43

pingouinux

Re : [Résolu] ajout caractères entre \n texte \n

Il s'agit de ce caractère

  => <U00A0>     /xc2/xa0     NO-BREAK SPACE

Hors ligne

#9 Le 13/02/2017, à 13:46

L'Africain

Re : [Résolu] ajout caractères entre \n texte \n

Oups, de nouveau nos messages se sont chevauchés... oui il s'agit de ce caractère, comme dit plus haut j'ai réussi à le virer, mais reste le petit problème du script qui met  la balise \s devant d'autres balises. Soit je modifie tous les espaces insécables d'un coup puis on travail à partir de là, soit on intègre ça au script python? Ce qui est le plus simple pour toi.
Merci de ton aide.


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#10 Le 13/02/2017, à 14:22

pingouinux

Re : [Résolu] ajout caractères entre \n texte \n

Donne-moi un exemple qui ne marche pas, sous la forme

hd le_fichier_qui_provoque_une_erreur

Je ne pense pas avoir le temps de regarder cet après-midi.

Hors ligne

#11 Le 13/02/2017, à 14:41

pingouinux

Re : [Résolu] ajout caractères entre \n texte \n

Tu peux essayer cette version, en python3 :

#!/usr/bin/python3
import sys, re
fic=sys.argv[1]
def repl(k): return k.group(1)+'\\s1 '+k.group(2)
with open(fic,'r') as f: txt=f.read()
print(re.sub(r'(\n[%s ]*\n)([^\\][^\n]+\n[%s ]*\n)'%(chr(0xa0),chr(0xa0)),repl,txt))

Hors ligne

#12 Le 13/02/2017, à 16:33

L'Africain

Re : [Résolu] ajout caractères entre \n texte \n

Super ça fonctionne parfaitement sur les fichiers dont j'ai préalablement enlevé les espaces. Un tout grand merci.


Ubuntu-Unity 18.04 LDLC (clevo) X/Lubuntu-Mate
"Donne à celui qui te demande…" Mt 5,42

Hors ligne

#13 Le 13/02/2017, à 18:02

pingouinux

Re : [Résolu] ajout caractères entre \n texte \n

Super ça fonctionne parfaitement sur les fichiers dont j'ai préalablement enlevé les espaces.

Normalement, ça doit marcher aussi avec les espaces insécables.

Hors ligne