¿Cómo eliminar algún carácter de una cadena en Unix?

¿Cómo eliminar algún carácter de una cadena en Unix?

Tengo dos cuerdas como esta
a=[2018:09:11-18:37:06:376476]
b=[2018:09:11-18:37:06:376446]
Quiero dos cuerdas como
a= 20180911183706376476
b= 20180911183706376446

¿Por favor, puede alguien ayudarme?

Respuesta1

Si su shell admite sustituciones "//" en variables, puede usar

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

(observe que "-" debe ser el último y "]" debe ser el primero en la [...]expresión de rango.

Si no, puedes usar algo como esto:

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

o, con sed(menos eficiente ya que tiene que iniciar un programa externo):

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

información relacionada