Quiero analizar una variable (en mi caso, es la versión del kit de desarrollo) para que esté .
libre de puntos ( ). Si version='2.3.3'
, la salida deseada es 233
.
Lo intenté como a continuación, pero requiere .
ser reemplazado por otro personaje que me dé 2_3_3
. Hubiera estado bien si tr . ''
hubiera funcionado.
1 VERSION='2.3.3'
2 echo "2.3.3" | tr . _
bash
text-processing
prayagupd
fuente
fuente
echo "2.3.3" | tr -d .
.VERSION='2.30.3100'
? No importa lo que acaba de.
eliminar con todas las respuestas aquí.Respuestas:
No hay necesidad de ejecutar un programa externo.
bash
La manipulación de cadenas puede manejarlo (también disponible enksh
(de dónde viene) yzsh
):(En los manuales de esos shells puede encontrar esto en la sección de expansión de parámetros).
fuente
${string//substring/replacement}
, donde aparentemente la falta de la barra diagonal final y la cadena de reemplazo se interpretan como eliminar . Ver aquí .man bash
lo dice claramente en el Shell de parámetros de expansión sección: “${parameter/pattern/string}
(...) Si la cadena es nula, coincidencias de patrón se eliminan y el/
siguiente patrón . Pueden omitirse”"1.0.0"
y quería solo el número, así que siga lo que @manatwork sugirió que cambié:"${VERSIONNUM//'"'}"
sin embargo, inserto incluso' '
porque de lo contrario no reconocería la""
cadena similar para despegar."
está presente en el valor? Me temo que esto cuenta como una nueva pregunta, pero trate de escapar de la cita doble:"${VERSIONNUM//\"}"
pastebin.com/3ECDtkwH-ash
también!Por orden cronológico:
tr / sed
csh / tcsh
Conchas POSIX:
ksh / zsh / bash / yash (y busybox
ash
cuando se construye conASH_BASH_COMPAT
)zsh
fuente
Además de las respuestas exitosas ya existe. Lo mismo se puede lograr con
tr
, con la--delete
opción.Lo que dará salida:
233
fuente
--delete
que no se reconoce bandera, pero se puede utilizar-d
en su lugarusted debe tratar con el
sed
lugarsed 's/\.//g'
fuente
Eso devolvería solo dígitos, sin importar qué otros caracteres estén presentes
fuente
Perl
Pitón
Si
$VERSION
solo contiene dígitos y puntos, podemos hacer algo aún más corto:(cuidado, es una vulnerabilidad de inyección de código si
$VERSION
puede contener algún carácter).AWK
O esto:
fuente