Как удалить какой-нибудь символ из строки в Unix?

У меня есть две строки, как это
a=[2018:09:11-18:37:06:376476]
b=[2018:09:11-18:37:06:376446]
Я хочу две строки, как
a= 20180911183706376476
b= 20180911183706376446

Кто-нибудь может помочь мне?

1 ответ

Решение

Если ваша оболочка поддерживает подстановки "//" в переменных, вы можете использовать

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

(обратите внимание, что "-" должно быть последним, а "]" должно быть первым в [...] Выражение диапазона.

Если нет, вы можете использовать что-то вроде этого:

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

или, с sed (менее эффективно, так как он должен запускать внешнюю программу):

a=`echo $a | sed 's/[]:[-]//g'`
Другие вопросы по тегам