Comment changer de format numérique (différent séparateur décimal) XXXXXX.XXX
-XXXXXX,XXX
utilisant sed
ou awk
?Comment changer le séparateur décimal avec awk/sed?
Répondre
Vous pouvez le faire:
echo "XXX.XX" | sed s/\./,/g
Je pense
s/\./,/g
devrait servir ce que tu veux ... à moins que tu veux quelque chose de plus spécial ...
Puisque la question est aussi étiquetés awk
:
awk 'gsub(/\./,",")||1'
si vous avez bash/ksh etc
var=XXX.XXX
echo ${var/./,}
Nice, voici un plus lourd qui fonctionne dans tous les shells POSIX: 'var = XXX.XXX; echo $ {var%. *}, $ {var ## *.} ' – schot
Ne serait-ce pas plus précis que les OP whas parler de chiffres .. pour vous assurer qu'il est un nombre qui est devant le point. Le document pourrait contenir d'autres points que l'OP ne veut pas remplacer.
sed '/[0-9]\./s/\./,/g'
À quel point voulez-vous être? Vous pouvez changer tous .
caractères, comme d'autres l'ont suggéré, mais cela permettra à un grand nombre de faux positifs si vous avez plus que des chiffres. Un peu plus stricte serait d'exiger qu'il y a des chiffres sur les deux côtés du point:
$ echo 123.324 2314.234 adfdasf.324 1234123.daf 255.255.255.0 adsf.asdf a1.1a |
> sed 's/\([[:digit:]]\)\.\([[:digit:]]\)/\1,\2/g'
123,324 2314,234 adfdasf.324 1234123.daf 255,255,255,0 adsf.asdf a1,1a
Cela ne permet des changements dans quelques cas étranges, à savoir 255.255.255.0
et a1.1a
, mais gère les numéros « normaux » proprement.
Si vous voulez remplacer le séparateur décimal à des fins cosmétiques
Dans la plupart des cas tr
est probablement la meilleure façon de remplacer les caractères:
$ echo "0.3"|tr '.' ','
0,3
Bien sûr, si vous traitez avec des numéros de mélange d'entrée et les chaînes , vous aurez besoin d'une approche plus robuste, comme celle proposée par Michael J. Barber ou même plus.
Si vous voulez remplacer le séparateur décimal à des fins de calcul
Par défaut gawk
(GNU awk
, à savoirla awk
de la plupart des distributions GNU/Linux) utilise le point comme séparateur décimal:
$ echo $LC_NUMERIC
fr_FR.UTF-8
$ echo "0.1 0.2"|awk '{print $1+$2}'
0.3
$ echo "0,1 0,2"|awk '{print $1+$2}'
0
Cependant vous pouvez le forcer à utiliser le séparateur décimal des paramètres régionaux en utilisant l'option --use-lc-numeric
:
$ echo $LC_NUMERIC
fr_FR.UTF-8
$ echo "0.1 0.2"|awk --use-lc-numeric '{print $1+$2}'
0
$ echo "0,1 0,2"|awk --use-lc-numeric '{print $1+$2}'
0,3
Si le format d'entrée est différent de l'environnement local actuel, vous pouvez bien sûr redéfinir LC_NUMERIC temporairement:
$ echo $LC_NUMERIC
fr_FR.UTF-8
$ echo "0.1 0.2"|LC_NUMERIC=en_US.UTF-8 awk --use-lc-numeric '{print $1+$2}'
0
$ echo "0,1 0,2"|LC_NUMERIC=fr_FR.UTF-8 awk --use-lc-numeric '{print $1+$2}'
0,3
- 1. Localisation avec séparateur décimal
- 2. Clavier numérique avec séparateur décimal
- 3. Double.TryParse() séparateur décimal d'entrée différent du séparateur décimal système
- 4. Séparateur décimal Java
- 5. SQL séparateur décimal
- 6. Séparateur décimal C#?
- 7. Groupement de chiffres Matplotlib (séparateur décimal)
- 8. chaîne à flotteur conversion - séparateur décimal
- 9. Valeur de format en XAML avec un séparateur décimal?
- 10. PDO renvoie les flottants avec une virgule comme séparateur décimal
- 11. Pourquoi la route ne pas trouver le séparateur décimal
- 12. Séparateur décimal du clavier sur un TextBox Wpf, comment?
- 13. Conversion double pour chaîne avec décimales N, point comme séparateur décimal, et aucun séparateur des milliers
- 14. Séparateur décimal différent dans VBS entre Windows et DOS
- 15. Comment changer le séparateur d'enregistrement dans un fichier texte?
- 16. GWT obtenir des utilisateurs séparateur décimal local char
- 17. Ajouter un séparateur virgule mille en décimal (.net)
- 18. changement décimal SQL delimiter
- 19. changer le préfixe décimal/suffixe dans les listes numérotées
- 20. Rails 3 et Oracle: les paramètres NLS rejettent le séparateur décimal
- 21. Problème avec Informix JDBC, MONEY et séparateur décimal dans les littéraux de chaîne
- 22. asp.net compare les validateurs pour permettre la virgule et le point (les deux!) Comme séparateur décimal
- 23. La colonne DataGridView personnalisée n'accepte pas le séparateur décimal saisi sous Windows Vista
- 24. Chaîne séparée avec séparateur # @ #
- 25. Besoin de convertir le double ou le décimal en chaîne
- 26. Formatage de sortie décimal C++
- 27. Utilisation de MaskedEditExtender avec le point décimal
- 28. TextItem dans GWT avec le problème décimal
- 29. Afficher le point décimal
- 30. Meilleure façon de convertir la chaîne en séparateur décimal "." et "," manière insensible?
ne pas avoir à utiliser || 1, 'awk « gsub (/\./, "") ' – ghostdog74
@' ghostdog74 gsub' renvoie le nombre de remplacements, votre version permet de sauter les lignes qui ne contient pas au moins un point. Je ne connais pas assez les données d'entrée de l'OP pour omettre le '|| 1'. – schot