Unix에서 문자열에서 일부 문자를 제거하는 방법은 무엇입니까?

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

관련 정보