Como remover algum caractere de uma string no Unix?

Como remover algum caractere de uma string no Unix?

Eu tenho duas cordas assim,
a=[2018:09:11-18:37:06:376476]
b=[2018:09:11-18:37:06:376446]
quero duas cordas assim
a= 20180911183706376476
b= 20180911183706376446

Alguém pode me ajudar?

Responder1

Se o seu shell suportar substituições "//" em variáveis, você pode usar

a=${a//[]:[-]/}

(observe que "-" deve ser o último e "]" deve ser o primeiro na [...]expressão de intervalo.

Caso contrário, você pode usar algo assim:

set_trim(){ local IFS=[:-]; v=$1; set -- $2; IFS=; eval "$v=$*"; }
set_trim a "$a"
set_trim b "$b"

ou, com sed(menos eficiente, pois precisa iniciar um programa externo):

a=`echo $a | sed 's/[]:[-]//g'`

informação relacionada