sed를 사용하여 숫자가 아닌 첫 번째 문자를 대문자로 바꾸고 다른 문자는 그대로 둡니다.

sed를 사용하여 숫자가 아닌 첫 번째 문자를 대문자로 바꾸고 다른 문자는 그대로 둡니다.

"123456"과 같은 문자열을 변환하려고 합니다.”에서 “123456" 또는"동쪽으로"시간est"이지만 기존 대문자는 변경하지 않고 그대로 둡니다(예: testHWbe TestHW.

나는 많은 것을 시도했습니다:

sed 's/[[:alpha:]]./\u\1/'

운이 없군요. 어떤 아이디어가 있나요?

답변1

\1\n또는 숫자 인 일반 형식은 n해당 역참조 표현식과 일치하는 텍스트로 대체되어야 하며, 이는 \(...\)BRE 또는 ERE (...)간에 텍스트를 그룹화하여 정의 할 수 있습니다.

GNU sed 사용:

$ echo 123456a | sed 's/\([[:alpha:]]\)/\u\1/'
123456A

또는:

$ echo 123456a | sed -E 's/([[:alpha:]])/\u\1/'
123456A

&역참조 대신 인용된 일치 텍스트를 사용할 수도 있습니다 .

$ echo 123456a | sed 's/[[:alpha:]]/\u&/'   
123456A

[:alpha:]소문자와 대문자가 모두 일치하므로 비슷한 내용은 그대로 123456Aa유지됩니다.

첫 번째 소문자를 해당 대문자로 바꾸려면 다음을 사용해야 합니다 [:lower:].

$ echo 123456Aa | sed 's/[[:lower:]]/\u&/'
123456AA

관련 정보