Ich habe eine Saite:
AddData
TestSomething
TellMeWhoYouAre
und so weiter. Ich möchte vor Großbuchstaben Leerzeichen einfügen. Wie kann ich es tun?
linux
command-line
text-formatting
HeroFromEarth
quelle
quelle
IClimbALadder
ReadFileFromCDDrive
und @Kusalanandas Lösung funktioniert großartig.Antworten:
Verwenden
sed
und vorausgesetzt, Sie möchten kein Leerzeichen vor dem Wort:Bei der Ersetzung wird nach einem Großbuchstaben gesucht, der unmittelbar auf ein anderes Nicht-Leerzeichen folgt, und ein Leerzeichen zwischen den beiden eingefügt.
WeAreATeam
Dies ergibt für Zeichenfolgen mit mehr als einem aufeinanderfolgenden Großbuchstaben FolgendesWe Are ATeam
. Führen Sie die Substitution ein zweites Mal aus, um dies zu sortieren:quelle
g
Flagge. Versuchen Sieecho ThisIsATest | sed 's/\(.\)\([[:upper:]]\)/\1 \2/g'
(Ihr Befehl) herauszufinden, warum es nicht funktioniert.s/[A-Z]/ \0/g
ganz zufrieden stellend ist ... `s / [AZ] / \ 0 / g; s / ^ //‘ , wenn Sie wirklich interessieren.Perl, mit regulären Ausdrücken von lookbehind und lookahead mit der Breite Null:
Diese Version trennt auch aufeinanderfolgende Großbuchstaben.
quelle
ReadFileFromUSBDrive
zu,Read File From U S B Drive
während das OP wollteRead File From USB Drive
.Fügen Sie Leerzeichen zwischen einem Buchstaben, der kein Großbuchstabe ist, und einem Buchstaben, der ein Großbuchstabe ist, hinzu
quelle
[^^]
("kein Caret (^
)")?Python-Lösung:
Testlauf:
quelle
print(line[0], end="")
gefolgt vonfor char in line[1:]:
Drucken , dass unerwünschte Leerzeichen am Anfang jeder Ausgangsleitung zu vermeiden.