Pages : 1
#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 (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
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
Tu aurais pu le faire en python
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 !
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
é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
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
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 !
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
A creuser mais là je peux pas !
-- Lucid Lynx --
Hors ligne
#11 Le 01/10/2010, à 23:02
- HP
Re : sed et fichiers pot
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 )
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
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
Pages : 1