GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Separate Elemente von Camelcase-Wörtern?

Gibt es eine Möglichkeit, CamelCase-Wörter an den „inneren“ Wortgrenzen in einem Text zu trennen?

Zum Beispiel angesichts der Zeichenfolge:

IamHelloTest forYou PickTest; 

Als Input möchte ich als Output erzeugen:

Iam
Hello
Test
for
You
Pick
Test

Aktualisierung: Nun, da die Frage viele hilfreiche Antworten hat, wie würde ich vorgehen, um auch die folgenden Fälle einzubeziehen?

Eingabe:

IamTestECHO TEST PickFoo BARFull;

Gewünschte Ausgabe:

I
am
Test
ECHO
TEST
Pick
Foo
Bar
FULL

Aktualisierung: Wie würde ich vorgehen, um auch den Unterstrich einzufügen?

Eingabe:

IamTestECHO TEST PickFoo BARFull def_python_FunctionTwo;

Gewünschte Ausgabe:

I
am
Test
ECHO
TEST
Pick
Foo
Bar
FULL
def
python
Function
Two

Akzeptierte Antwort:

Um mit Ihrem zweiten Beispiel umzugehen, schlagen Sie einen eher „regelbasierten“ Ansatz vor.
Betrachten Sie das folgende Perl-Skript (camelcaseproc ):

#!/usr/bin/perl -CSDA -p

s{  \W+                                     # break on non-word
 |  _                                       # break on "_"
 |  (?<=\p{Ll})(?=\p{Lu})                   # ...aB... → ...a-B...
 |  (?<=\p{Lu})(?=\p{Lu}\p{Ll})             # ..ABCd.. → ...AB-Cd.
 |  (?<=I)(?=am)                            # exceptions rules
 }{-}xg                                     # 
  • Zeile 1:Unicode verwenden (um Akzente zu verarbeiten, Kyrillisch)
  • Zeile 2:Ersetzen Sie Nicht-Buchstaben durch „\n“
  • Zeile 3,4,5:Break-intraWord-Regeln (definiert durch linken Kontext, rechten Kontext)
  • Zeile 5:Ausnahmeregeln für „Iam“
  • Zeile 5:x Option ermöglicht das Hinzufügen von Kommentaren in regulären Ausdrücken

Nach dem üblichen chmod +x camelcaseproc wir können es verwenden als:

$ camelcaseproc <<< "IamTestECHO TEST PickFoo BARFull"
I-am-Test-ECHO-TEST-Pick-Foo-BAR-Full

$ camelcaseproc input-file

$ echo "IamTestECHO TEST PickFoo BARFull" | camelcaseproc

Linux
  1. Einfacher PHP-Mail-Test

  2. Shell-Test, um ein Muster in einer Zeichenfolge zu finden?

  3. Verwenden Sie _roff, um Wörter zu unterstreichen?

  4. Wiederholte Wörter in einem Text finden

  5. Den Inhalt einer Variablen wortweise umkehren

speedtest-cli – Internet-Geschwindigkeitstest im Linux-Terminal

So testen Sie das Plasma Mobile OS auf Ihrem Computer

So testen Sie ein Paket, ohne es unter Linux zu installieren

Bash-Skripting – Bedingte Anweisungen

Rechtschreibprüfung in der Linux-Befehlszeile

Arrays in Shell-Skripten