대문자 앞에 공백 추가

대문자 앞에 공백 추가

문자열이 있습니다.

AddData
TestSomething
TellMeWhoYouAre

등. 대문자 앞에 공백을 추가하고 싶습니다. 어떻게 해야 합니까?

답변1

를 사용 sed하고 단어 앞에 공백이 필요하지 않다고 가정합니다.

$ sed 's/\([^[:blank:]]\)\([[:upper:]]\)/\1 \2/g' file.in
Add Data
Test Something
Tell Me Who You Are

교체는 공백이 아닌 다른 문자 바로 다음에 대문자를 찾아 그 사이에 공백을 삽입합니다.

이는 여러 개의 연속된 대문자가 포함된 문자열(예: )에 대해 WeAreATeam생성됩니다 We Are ATeam. 이를 정리하려면 교체를 다시 실행하십시오.

$ sed -e 's/\([^[:blank:]]\)\([[:upper:]]\)/\1 \2/g' \
      -e 's/\([^[:blank:]]\)\([[:upper:]]\)/\1 \2/g' file.in

답변2

Perl, 뒤보기 및 너비가 0인 정규식 사용:

$ perl -pe 's/(?<=\w)(?=[A-Z])/ /g'  file.in 

Tell Me Who You Are                    ## TellMeWhoYouAre
I Am A Regular Expression User         ## IAmARegulaExpressionUser

이 버전은 또한 연속된 대문자를 구분합니다.

답변3

sed -r -e "s/([^A-Z])([A-Z])/\1 \2/g"

대문자가 아닌 문자와 대문자 사이에 공백 추가

답변4

Python 솔루션:

#!/usr/bin/env python
from __future__ import print_function
import sys

with open(sys.argv[1]) as f:
    for line in f:
        for char in line:
            if char.isupper():
               print(" "+char,end="")
            else:
               print(char,end="")

테스트 실행:

$ ./add_space_to_upper.py input.txt                        
 Add Data
 Test Something
 Tell Me Who You Are

관련 정보