대소문자를 구분하지 않고 검색하는 동안 패턴을 변경하지 않고 중앙에 배치

대소문자를 구분하지 않고 검색하는 동안 패턴을 변경하지 않고 중앙에 배치

이전에 이 질문을 받은 적이 있다면 죄송합니다. 하지만 지금까지 아무것도 찾지 못했습니다.

문제는 다음과 같습니다. 문자열과 패턴이 있고 문자열 내부의 패턴을 대괄호로 묶고 싶습니다.

대소문자를 구분하는지 여부에 관계없이 패턴을 둘러싸고 싶지만 원래 문자열과 동일한 대소문자를 갖기를 원합니다.

이것은 지금까지 최선의 시도입니다.

#!/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출력 ABCBDa[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"

관련 정보