![sed를 사용하여 숫자가 아닌 첫 번째 문자를 대문자로 바꾸고 다른 문자는 그대로 둡니다.](https://linux55.com/image/91286/sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%88%AB%EC%9E%90%EA%B0%80%20%EC%95%84%EB%8B%8C%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%EB%AC%B8%EC%9E%90%EB%A5%BC%20%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C%20%EB%B0%94%EA%BE%B8%EA%B3%A0%20%EB%8B%A4%EB%A5%B8%20%EB%AC%B8%EC%9E%90%EB%8A%94%20%EA%B7%B8%EB%8C%80%EB%A1%9C%20%EB%91%A1%EB%8B%88%EB%8B%A4..png)
"123456"과 같은 문자열을 변환하려고 합니다.ㅏ”에서 “123456ㅏ" 또는"티동쪽으로"시간est"이지만 기존 대문자는 변경하지 않고 그대로 둡니다(예: testHW
be 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