J'ai des cordes:
AddData
TestSomething
TellMeWhoYouAre
etc. Je veux ajouter de l'espace avant les lettres majuscules. Comment puis-je le faire?
linux
command-line
text-formatting
HeroFromEarth
la source
la source
IClimbALadder
ReadFileFromCDDrive
et la solution de @Kusalananda fonctionne très bien.Réponses:
En utilisant
sed
et en supposant que vous ne voulez pas d'espace devant le mot:La substitution recherchera une lettre majuscule immédiatement après un autre caractère non blanc et insérera un espace entre les deux.
Pour les chaînes avec plus d'un caractère majuscule consécutif, par exemple
WeAreATeam
, cela produitWe Are ATeam
. Pour trier cela, exécutez la substitution une deuxième fois:la source
g
indicateur. Essayezecho ThisIsATest | sed 's/\(.\)\([[:upper:]]\)/\1 \2/g'
(votre commande) pour voir pourquoi cela ne fonctionne pas.s/[A-Z]/ \0/g
tout à fait satisfaisant ... `s / [AZ] / \ 0 / g; s / ^ // 'si vous vous en souciez vraiment.Perl, en utilisant les expressions régulières de largeur nulle lookbehind et lookahead:
Cette version sépare également les lettres majuscules consécutives.
la source
ReadFileFromUSBDrive
enRead File From U S B Drive
alors que l'OP voulaitRead File From USB Drive
.Ajouter de l'espace entre une lettre qui n'est pas une lettre majuscule et une lettre qui est une lettre majuscule
la source
[^^]
("pas un caret (^
)")?Solution Python:
Essai:
la source
print(line[0], end="")
suivrefor char in line[1:]:
pour éviter d'imprimer cet espace indésirable au début de chaque ligne de sortie.