如何在 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'`

相关内容