Eu quero analisar uma variável (no meu caso, é a versão do kit de desenvolvimento) para torná-la .
livre de pontos ( ). Se version='2.3.3'
, a saída desejada é 233
.
Eu tentei como abaixo, mas ele precisa .
ser substituído por outro personagem que me dê 2_3_3
. Teria sido bom se tr . ''
tivesse funcionado.
1 VERSION='2.3.3'
2 echo "2.3.3" | tr . _
bash
text-processing
prayagupd
fonte
fonte
echo "2.3.3" | tr -d .
.VERSION='2.30.3100'
? Não importa o que.
são removidos, com todas as respostas aqui.Respostas:
Não há necessidade de executar um programa externo.
bash
A manipulação de string do pode lidar com isso (também disponível emksh
(de onde vem) ezsh
):(Nos manuais dessas cápsulas, você pode encontrar isso na seção de expansão de parâmetros.)
fonte
${string//substring/replacement}
onde, aparentemente, a falta da barra final e da seqüência de substituição são interpretadas como exclusão . Veja aqui .man bash
diz claramente na Shell Parâmetro Expansão secção: “${parameter/pattern/string}
(...) Se corda é nulo, jogos de padrão são excluídas ea/
seguinte padrão . Pode ser omitido”"1.0.0"
e eu queria apenas o número, então siga o que o @manatwork sugeriu que eu mudasse:"${VERSIONNUM//'"'}"
no entanto, insiro mesmo' '
porque, caso contrário, ele não reconheceria a""
sequência semelhante para decolar."
estão presentes no valor? Receio que esta conta como nova pergunta, mas tenta apenas escapar da aspa dupla:"${VERSIONNUM//\"}"
pastebin.com/3ECDtkwH-ash
também!Por ordem cronológica:
tr / sed
csh / tcsh
Cartuchos POSIX:
ksh / zsh / bash / yash (e busybox
ash
quando construído comASH_BASH_COMPAT
)zsh
fonte
Além das respostas bem-sucedidas, já existe. O mesmo pode ser alcançado com
tr
, com a--delete
opçãoQual saída:
233
fonte
--delete
bandeira não é reconhecido, mas você pode usar-d
em vezvocê deve tentar com
sed
vezsed 's/\.//g'
fonte
Isso retornaria apenas dígitos, independentemente de outros caracteres presentes
fonte
Perl
Pitão
Se
$VERSION
contiver apenas dígitos e pontos, podemos fazer algo ainda mais curto:(cuidado, é uma vulnerabilidade de injeção de código que
$VERSION
pode conter algum caractere).AWK
Ou isto:
fonte