이전에 이 질문을 받은 적이 있다면 죄송합니다. 하지만 지금까지 아무것도 찾지 못했습니다.
문제는 다음과 같습니다. 문자열과 패턴이 있고 문자열 내부의 패턴을 대괄호로 묶고 싶습니다.
대소문자를 구분하는지 여부에 관계없이 패턴을 둘러싸고 싶지만 원래 문자열과 동일한 대소문자를 갖기를 원합니다.
이것은 지금까지 최선의 시도입니다.
#!/bin/bash
STRING="ABCBD"
PATTERN="b"
echo $STRING | sed "s/$PATTERN/[$PATTERN]/Ig"
A[b]C[b]D
그러나 나는 그것이 A[B]C[B]D
.
모드가 가 B
아닌 경우 b
출력도 이어야 합니다 A[B]C[B]D
.
문자열이 가 아닌 경우 abcbd
출력 ABCBD
은 a[b]c[b]d
패턴 B
또는 이어야 합니다 b
.
이를 달성하는 방법을 알고 있습니까? 어떤 도움이라도 받고 싶습니다.
답변1
sed
당신도 이것을 할 수 있습니다.
echo $STRING | sed -e "s/\($PATTERN\)/[\1]/Ig"
답변2
Perl이 마음에 들지 않는다면 다음과 같습니다.
echo $STRING | perl -pe "s/($PATTERN)/[\1]/ig"