문자열의 마지막 숫자 값을 괄호로 묶습니다.

문자열의 마지막 숫자 값을 괄호로 묶습니다.

POP9POP10- 일반적으로 같은 단어가 포함된 텍스트 파일이 있습니다 . 동일한 파일에는 `와 같은 단어 인스턴스도 있습니다.POPnumberPOP(1)POP(2)POP(number)

모든 인스턴스를 변환하고 기존 인스턴스를 변경하지 않고 그대로 두는 방법을 찾고 있습니다. 어떤 방법으로 이를 달성할 수 있나요?POPnumberPOP(number)POP(number)sed

답변1

sed 's/\(POP\)\([0123456789]\{1,\}\)/\1(\2)/g' < input.txt > output.txt

어디가 \(...\)익숙해요?포착\1에서 대체에 사용할 수 있도록 일치하는 것은 집합의 단일 문자와 일치하며 \2이전 문자(이 경우 숫자)와 일치합니다.[0123456789]\{1,\}

sed당신이 지원하는 경우-E확장하다정규식의 경우 다음을 사용하여 단축하고 읽기 쉽게 만들 수 있습니다.

sed -E 's/(POP)([0123456789]+)/\1(\2)/g' < input.txt > output.txt

관련 정보