文字列があります。
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