
문자열이 있습니다.
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