Eu tenho uma corda:
AddData
TestSomething
TellMeWhoYouAre
e assim por diante. Quero adicionar espaço antes de letras maiúsculas. Como eu posso fazer isso?
linux
command-line
text-formatting
HeroFromEarth
fonte
fonte
IClimbALadder
ReadFileFromCDDrive
e a solução do @Kusalananda funciona muito bem.Respostas:
Usando
sed
e assumindo que você não deseja um espaço na frente da palavra:A substituição procurará uma letra maiúscula imediatamente após outro caractere que não seja um espaço em branco e inserirá um espaço entre os dois.
Para seqüências com mais de um caractere maiúsculo consecutivo, como
WeAreATeam
, isso produzWe Are ATeam
. Para classificar isso, execute a substituição uma segunda vez:fonte
g
sinalizador. Tenteecho ThisIsATest | sed 's/\(.\)\([[:upper:]]\)/\1 \2/g'
(seu comando) para ver por que não funciona.s/[A-Z]/ \0/g
é totalmente satisfatório ... `s / [AZ] / \ 0 / g; s / ^ // 'se você realmente se importa.Perl, usando expressões regulares lookbehind e lookahead com largura zero:
Esta versão também está separando letras maiúsculas consecutivas.
fonte
ReadFileFromUSBDrive
noRead File From U S B Drive
que o OP queriaRead File From USB Drive
.Adicione espaço entre uma letra que não seja uma letra maiúscula e uma letra que seja uma letra maiúscula
fonte
[^^]
("não é um sinal de intercalação (^
)")?Solução Python:
Execução de teste:
fonte
print(line[0], end="")
seguirfor char in line[1:]:
para evitar a impressão desse espaço indesejado no início de cada linha de saída.