如何從 Unix 字串中刪除某些字元?

如何從 Unix 字串中刪除某些字元?

我有兩個像這樣的字串
a=[2018:09:11-18:37:06:376476]
b=[2018:09:11-18:37:06:376446]
我想要兩個像這樣的字串
a= 20180911183706376476
b= 20180911183706376446

有人可以幫我嗎?

答案1

如果您的 shell 支援變數中的「//」替換,您可以使用

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'`

相關內容