Unix 명령 sed가 변수를 대체합니다.

Unix 명령 sed가 변수를 대체합니다.

각 값 주위의 대괄호 []와 따옴표를 제거하고 시작과 끝에 따옴표를 추가하고 싶습니다.

X = ['8922','9292','3220']

다음 출력을 원합니다.

Y = '8922,9292,3220'

어떻게 해야 하나요? 제안해주세요.

답변1

매우 간단합니다. 여는 괄호와 따옴표를 작은따옴표로 바꾸고, 따옴표 사이의 쉼표를 쉼표로 바꾸고, 닫는 괄호의 따옴표를 다시 작은따옴표로 바꿉니다.

sed "s/\['/'/;s/','/,/g;s/']/'/" file

비결은 종종 패턴의 고유한 점을 찾는 것입니다.

답변2

X값이 다음과 같이 설정된 쉘 변수가 있다고 가정하십시오 .

X="['8922','9292','3220']"

그런 다음 를 사용하여 작은따옴표와 대괄호를 제거할 수 있습니다 tr. 동시에 새 작은따옴표를 삽입할 수도 있습니다.

Y="'$( printf '%s' "$X" | tr -d "[]'" )'" 

다음을 사용하면 bash약간 zsh더 간결한 방법으로 이 작업을 수행할 수 있습니다 .

Y="'${X//[][\']/}'"

관련 정보