У меня есть строки:
AddData
TestSomething
TellMeWhoYouAre
и так далее. Я хочу добавить пробел перед заглавными буквами. Как мне это сделать?
linux
command-line
text-formatting
HeroFromEarth
источник
источник
IClimbALadder
ReadFileFromCDDrive
и решение @Kusalananda прекрасно работает.Ответы:
Используя
sed
и предполагая, что вы не хотите пробела перед словом:Подстановка будет искать заглавную букву сразу после другого непробельного символа и вставлять пробел между ними.
Для строк с более чем одним последовательным символом верхнего регистра, как
WeAreATeam
, например , это производитWe Are ATeam
. Чтобы отсортировать это, запустите замену второй раз:источник
g
флагом. Попробуйтеecho ThisIsATest | sed 's/\(.\)\([[:upper:]]\)/\1 \2/g'
(ваша команда), чтобы увидеть, почему это не работает.s/[A-Z]/ \0/g
вполне удовлетворителен ... `s / [AZ] / \ 0 / g; s / ^ // ', если вам действительно все равно.Perl, используя регулярные выражения lookbehind и lookahead с нулевой шириной:
Эта версия также разделяет последовательные заглавные буквы.
источник
ReadFileFromUSBDrive
вRead File From U S B Drive
то время как ОП хотелRead File From USB Drive
.Добавьте пробел между буквой, которая не является заглавной буквой, и буквой, которая является заглавной буквой
источник
[^^]
("не карет (^
)")?Решение Python:
Тестовый забег:
источник
print(line[0], end="")
следовать,for char in line[1:]:
чтобы избежать печати этого ненужного места в начале каждой строки вывода.