Outra solução sed
echo "-X-1.5" | sed 's/-//2'
Substitua a segunda ocorrência de - sem nada.
Isso parece fácil demais, mas ainda não funciona. Eu tenho:
-X-1.5
e precisa de:
-X1.5
Usando:
echo -X-1.5 | tr -d '-'
dá:
X1.5
que está perto, mas não perto o suficiente.
Todos os ponteiros são bem-vindos,
Se você sabe que o caractere a ser deletado está na posição 2 (começando a partir de 0), você pode fazer isso:
VAR="-X-1.5"
echo "${VAR:0:2}${VAR:3}"
que dará -X1.5
.
Se fosse a primeira instância de um personagem que você queria excluir, mas não sabia sua posição com antecedência, você poderia fazer isso:
VAR="X-1.5-oh"
echo "${VAR/-/}"
que dará X1.5-oh
.
Como a parte a remover não está no começo, no final, nem é uma remoção completa, ela descarta muitos atalhos genéricos em favor de algo mais específico para corresponder a um padrão conhecido, então isso realmente depende qual será o padrão ..
Se, por exemplo, o padrão sempre for um -X
seguido por -
que você deseja remover, você pode, por exemplo:
$ echo "-X-1.5" | sed 's/-X-/-X/g'
Resultados:
-X1.5
-X-
-X
/g
para realizá-lo avidamente significando todas essas ocorrências, caso você tenha -X-1.5-X-2.5-X-3.5
etc