Unix で文字列から一部の文字を削除するにはどうすればよいでしょうか?

Unix で文字列から一部の文字を削除するにはどうすればよいでしょうか?

私はこのような2つの文字列を持っています
a=[2018:09:11-18:37:06:376476]
b=[2018:09:11-18:37:06:376446]
私はこのような2つの文字列が欲しいです
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'`

関連情報