Cómo cambiar el formato de número (separador decimal diferente) de XXXXXX.XXX
a XXXXXX,XXX
usando sed
o awk
?¿Cómo cambiar el separador decimal con awk/sed?
Respuesta
usted puede hacer esto:
echo "XXX.XX" | sed s/\./,/g
creo
s/\./,/g
debe servir lo que quiere u ... a menos que quieres algo más especial ...
Dado que la cuestión es también etiquetados awk
:
awk 'gsub(/\./,",")||1'
si tiene bash/ksh etc
var=XXX.XXX
echo ${var/./,}
Bueno, aquí hay uno más engorroso que funciona en todas las shells POSIX: 'var = XXX.XXX; echo $ {var%. *}, $ {var ## *.} ' – schot
¿No sería más exacto ya que los WHAS OP hablando de números .. para asegurarse de que es un número que lleva antes del punto. El documento podría contener otros puntos que el OP no desea sustituir.
sed '/[0-9]\./s/\./,/g'
¿Qué tan riguroso es tu deseo? Puede cambiar todos los caracteres .
, como otros han sugerido, pero eso permitirá una gran cantidad de falsos positivos si tiene más que solo números. Un poco más estricta sería requerir que hay dígitos en ambos lados del punto:
$ 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
Eso permite cambios en un par de casos raros, a saber 255.255.255.0
y a1.1a
, pero maneja los números "normales" limpiamente.
Si desea sustituir el separador decimal para fines cosméticos
En la mayoría de los casos tr
es probablemente la forma más fácil de sustituir caracteres:
$ echo "0.3"|tr '.' ','
0,3
Por supuesto, si usted se ocupa de los números de mezcla de entrada y cadenas , necesitarás un enfoque más sólido, como el propuesto por Michael J. Barber o incluso más.
Si desea sustituir el separador decimal para fines de cálculo
Por defecto gawk
(GNU awk
, es decir,la awk
de la mayoría de las distribuciones de GNU/Linux) utiliza el punto como separador decimal:
$ 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
Sin embargo se puede forzar que se use el separador decimal de la localización actual usando la opción --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 el formato de entrada es diferente de la configuración regional actual, puede, por supuesto, redefinir LC_NUMERIC temporalmente:
$ 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. Cambiar el separador decimal en MySQL
- 2. Teclado numérico con separador decimal
- 3. separador decimal en NumberFormat
- 4. Double.TryParse() separador decimal de entrada diferente al separador decimal del sistema
- 5. Convertir/Convertir un nVarChar con Separador de Comas en Decimal
- 6. cadena a flote la conversión - separador decimal
- 7. ¿Valor de formato en XAML con un separador decimal?
- 8. jQuery validar separador decimal y Asp.net MVC
- 9. Cambiar el separador predeterminado en el molde
- 10. conversión doble para cadena con N decimales, punto como separador decimal, y ningún separador de miles
- 11. Separador decimal de teclado en un Wpf TextBox, ¿cómo?
- 12. ¿Cuál es el símbolo de separador decimal en JavaScript?
- 13. Agregue el separador de coma mil a decimal (.net)
- 14. ¿Cómo cambio el separador decimal en el comando printf en bash?
- 15. Qt - punto decimal personalizado y separador de miles
- 16. perl -a: ¿Cómo cambiar el separador de columna?
- 17. ¿Cómo cambio mi flotador en un número decimal doble con una coma como separador de punto decimal en python?
- 18. ¿Cómo se lee en números con una coma como separador decimal?
- 19. Cómo cambiar el símbolo del punto decimal en double.ToString()?
- 20. punto de Fuerza ("") como separador decimal en java
- 21. cómo cambiar de decimal a usar .net%
- 22. php cómo obtener el separador decimal/mil actual para una localidad determinada
- 23. ¿Cómo puedo convertir el decimal? a decimal
- 24. Convert con punto o una coma como separador decimal a número en JavaScript
- 25. Cambiar el separador de ruta en Windows PowerShell
- 26. Cambiar el color de un separador de línea en Cocoa
- 27. no puede cambiar el separador ruleta de color desde
- 28. XML-Deserialización de valor doble con separador decimal alemán en C#
- 29. Android GridView con Separador
- 30. Cómo modificar std :: stod (cadena a doble) para separador decimal y número de dígitos
no tienen que utilizar || 1, 'awk 'gsub (/\./, "") '' – ghostdog74
@ ghostdog74 gsub' devuelve el número de reemplazos, su versión se salta líneas que no contiene al menos un punto No sé lo suficiente sobre los datos de entrada del OP para omitir '|| 1'. – schot