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.
bashLa 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 bashlo 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-ashtambién!Por orden cronológico:
tr / sed
csh / tcsh
Conchas POSIX:
ksh / zsh / bash / yash (y busybox
ashcuando se construye conASH_BASH_COMPAT)zsh
fuente
Además de las respuestas exitosas ya existe. Lo mismo se puede lograr con
tr, con la--deleteopción.Lo que dará salida:
233fuente
--deleteque no se reconoce bandera, pero se puede utilizar-den su lugarusted debe tratar con el
sedlugarsed 's/\.//g'fuente
Eso devolvería solo dígitos, sin importar qué otros caracteres estén presentes
fuente
Perl
Pitón
Si
$VERSIONsolo contiene dígitos y puntos, podemos hacer algo aún más corto:(cuidado, es una vulnerabilidad de inyección de código si
$VERSIONpuede contener algún carácter).AWK
O esto:
fuente