7
votes

Trouver / remplacer avec grep et TextWrangler

J'utilise grep sur TextWrangler pour trouver des chaînes de ce type: xxx

ma commande regex est la suivante: xxx

Ce qui semble trouver les chaînes correctement. Je voudrais remplacer la chaîne 4 600.00 avec 4600.00 car je souhaite enregistrer les données dans un fichier .csv . Comment puis-je supprimer la virgule de chaque numéro que je trouve?


2 commentaires

Je suppose que votre ligne contient non seulement ce nombre, mais quelque chose comme «Foo, Bar, Blah, 4 600 000,00, quelques-uns, plus« Cependant, que si la ligne est «FOO, Bar, BLAH, 999 600 000,00, ...» Comment pouvez-vous dire 999 et 600000,00 sont deux colonnes? Y a-t-il une autre règle dans votre fichier d'entrée?


Les chiffres restent en dessous de 100 000, il suffit de trouver , 000,00 . Je ne suis pas clair ce que le code de remplacement est cependant; J'ai essayé \ d \ d {3}. \ D {2} .


3 Réponses :


1
votes

Awk Onliner:

kent$  awk --version|head -1
GNU Awk 3.1.6

kent$  echo "foo,bar,blah,46,000.00,some,more"|awk --re-interval  '{x=gensub(/([0-9]{1,3}),([0-9]{3}\.[0-9]{2})/,"\\1\\2","g");print x}'
foo,bar,blah,46000.00,some,more


1 commentaires

La vraie question ici était pour TextWrangler, pas pour la ligne de commande



0
votes

Un moyen d'utiliser sed : xxx

Vous pouvez ajouter le drapeau -i pour écrire les modifications directement sur le fichier. < / p>


0 commentaires

12
votes

Recherche: (\ d {1,3}), (\ d {1,3}) \. (\ d {1,2})

Remplacer: \ 1 \ 2. \ 3

fonctionne dans TextWrangler.


0 commentaires