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 01/10/2010, à 17:04

HP

sed et fichiers pot

Bon, j'ai un script qui génère des fichiers .pot, avec ce genre de lignes :

#: components/module.py:85 components/module.py:94

et je voudrais que les lignes contenant deux items soient coupées en deux :

#: components/module.py:85 
#: components/module.py:94

Le truc, c'est que je ne sais faire que des remplacements assez basiques avec sed, et que là, ça dépasse mes compétences…


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#2 Le 01/10/2010, à 19:03

AnsuzPeorth

Re : sed et fichiers pot

Bjr,
Tu aurais pu le faire en python smile (surtout que tu te demerde aec ce langage !)
Sinon (fonctionne chez moi)

sed '\@#: @s@\(#: .*\) \(.*\)@\1\n#: \2@' fichier

fichier source:

#: components/module.py:85 components/module.py:94
ligne
#: components/module.py:85 components/module.py:94
autre
#: components/module.py:8
autre ligne
#: components/module.py:8
#: components/module.py:85 components/module.py:94

resultat:

#: components/module.py:85
#: components/module.py:94
ligne
#: components/module.py:85
#: components/module.py:94
autre
#: components/module.py:8
autre ligne
#: components/module.py:8
#: components/module.py:85
#: components/module.py:94

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 01/10/2010, à 19:03

Totor

Re : sed et fichiers pot

étonnant de ta part oO :

sed 's/^\(#[^[:digit:]]\+:[[:digit:]]\+\) \(comp[^[:digit:]]\+:[[:digit:]]\+\)$/\1\n#: \2/' <<< "#: components/module.py:85 components/module.py:94"

-- Lucid Lynx --

Hors ligne

#4 Le 01/10/2010, à 19:16

AnsuzPeorth

Re : sed et fichiers pot

Comme tjrs, Totor et le soucis du détails smile


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 01/10/2010, à 19:26

HP

Re : sed et fichiers pot

AnsuzPeorth a écrit :

Tu aurais pu le faire en python smile

C'est pour intégrer dans un script bash… qui me mâche énormément le travail de localisation, alors, bon, il m'aurait fallu un "one-liner", alors… si quelqu'un a je prends ! big_smile
Bon, je teste les propositions, et je vous tiens au jus, merci !


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#6 Le 01/10/2010, à 19:41

HP

Re : sed et fichiers pot

Totor a écrit :

étonnant de ta part oO :

sed 's/^\(#[^[:digit:]]\+:[[:digit:]]\+\) \(comp[^[:digit:]]\+:[[:digit:]]\+\)$/\1\n#: \2/' <<< "#: components/module.py:85 components/module.py:94"

Il y avait quoi d'étonnant dans la proposition de AnsuzPeorth ?
Je demande parce que je ne suis pas bien capable de tout comprendre…

Si mes chemins sont plus du genre :

#: ./../../../components/module.py:66

elle fonctionne encore, à peu près… pas la tienne, probablement la regex qui est plus restrictive ?
Je disais « à peu près », parce que le premier ./ est perdu… à tester, mas c'est peut-être msgcat qui l'enlève en trouvant çà redondant… bon, c'est pas dramatique, non plus.

Dernière modification par HP (Le 01/10/2010, à 19:46)


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#7 Le 01/10/2010, à 19:47

AnsuzPeorth

Re : sed et fichiers pot

Il y avait quoi d'étonnant dans la proposition de AnsuzPeorth ?

Il parlait de toi je pense, on a posté au même moment.

Sinon, ma solution est moins restirctive, je matche #: en début de ligne et fait le taf si ok.
Ma solution risque de coincer en cas d'espace ailleurs que pour séparer les 2 items.

Il faudrait un mix des 2 solutions smile

Dernière modification par AnsuzPeorth (Le 01/10/2010, à 19:50)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#8 Le 01/10/2010, à 19:50

HP

Re : sed et fichiers pot

AnsuzPeorth a écrit :

Il y avait quoi d'étonnant dans la proposition de AnsuzPeorth ?

Il parlait de toi je pense, on a posté au même moment.

Arf… comme quoi, ce n'était pas évident à interpréter.
Bé, sed… je ne maîtrise que les bases… après, ça devient trop cabalistique pour moi avec tous ces symboles étranges en abondance ! smile


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#9 Le 01/10/2010, à 19:52

AnsuzPeorth

Re : sed et fichiers pot

Bé, sed… je ne maîtrise que les bases… après, ça devient trop cabalistique pour moi avec tous ces symboles étranges en abondance ! smile

C'est sur, à comparer avec la clarté de python ...
Sinon, un bon tuto sur sed:
http://www.commentcamarche.net/faq/suje … sed-part-i


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#10 Le 01/10/2010, à 22:26

Totor

Re : sed et fichiers pot

oui, effectivement je m'adressais à HP. D'ailleurs, je n'avais même pas vu la réponse d'Anzuz !
Je trouve ça étonnant car HP donne l'impression de quelqu'un d'autonome et que la demande n'est pas d'une grande complexité.

Pour ma regex, je ne vois pas pourquoi des caractères sont perdus hmm
A creuser mais là je peux pas !


-- Lucid Lynx --

Hors ligne

#11 Le 01/10/2010, à 23:02

HP

Re : sed et fichiers pot

Totor a écrit :

la demande n'est pas d'une grande complexité.

Pour moi elle l'était, et le reste, vraiment.


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#12 Le 01/10/2010, à 23:32

AnsuzPeorth

Re : sed et fichiers pot

Je disais « à peu près », parce que le premier ./ est perdu… à tester, mas c'est peut-être msgcat qui l'enlève en trouvant çà redondant

Ca doit être un truc du genre, aucune raison que des caractères soient supprimés avec ces commandes sed.
Et sinon, ça le fait ou faudrait améliorer la commande ?

Pour ma regex, je ne vois pas pourquoi des caractères sont perdus

je pense que c'est parce que tu sépares à 'comp', alors que les chemins peuvent être plus long, et ne pas commencer par comp.
Je me trompe peut être !(je préfére prendre mes précautions smile)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#13 Le 01/10/2010, à 23:40

HP

Re : sed et fichiers pot

AnsuzPeorth a écrit :

Je disais « à peu près », parce que le premier ./ est perdu… à tester, mas c'est peut-être msgcat qui l'enlève en trouvant çà redondant

Ca doit être un truc du genre, aucune raison que des caractères soient supprimés avec ces commandes sed.
Et sinon, ça le fait ou faudrait améliorer la commande ?

sed '\@#: @s@\(#: .*\) \(.*\)@\1\n#: \2@' <<< '#: ./../../../components/module.py:66 ./../../../components/module.py:68'
#: ./../../../components/module.py:66
#: ./../../../components/module.py:68

Non, non, c'est bon ! Rien à améliorer…
Oui, on peut considérer que c'est bon… de toute façon le ./ du début du chemin est complétement redondant, et donc on peut s'en dispenser, si un outil utiliser avant sed le supprime, il n'a pas foncièrement tort ! Et, encore, merci à vous deux.


cat /dev/urandom >/dev/null 2>&1 #github

Hors ligne

#14 Le 01/10/2010, à 23:56

alej

Re : sed et fichiers pot

Sinon, si quand t'as 2 items, ben t'as 2 espaces, sans se casser la tête...

sed '/^#:/s/ /\n#:&/2'

Hors ligne