"string1, string2, string3"과 같은 문자열이 있습니다.
["string1","string2","string3"]로 변환하고 싶습니다.
나는 사용하려고
sed 's/\(,\)/"\1"/g'
하지만 돌아왔어string1","string2","string3
답변1
이미 쉼표 주위에 따옴표를 삽입할 수 있으므로 시작과 끝에 합계를 추가하기만 하면 됩니다 ["
."]
sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
예:
$ echo string1,string2,string3 | sed 's/^/["/; s/\(,\)/"\1"/g; s/$/"]/'
["string1","string2","string3"]
답변2
순수한 bash 솔루션은 다음과 같습니다.
$ str='string1,string2,string3'
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]
이 방법에는 외부 유틸리티나 하위 프로세스가 필요하지 않으므로 속도가 빠릅니다.
어떻게 작동하나요?
우리는 배쉬를 사용합니다패턴 교체모든 쉼표는 셸 활성 문자 ","
이므로 "
다음 명령에서 이스케이프해야 합니다.
$ echo ${str//,/\",\"}
string1","string2","string3
마지막 단계는 문자열의 ["
시작과 끝에 추가하는 것입니다. "]
그러므로:
$ echo "[\"${str//,/\",\"}\"]"
["string1","string2","string3"]