GNU/Linux >> Linux Esercitazione >  >> Linux

Elementi separati delle parole Camelcase?

C'è un modo per dividere le parole CamelCase ai limiti delle parole "interne" in un testo?

Ad esempio, data la stringa:

IamHelloTest forYou PickTest; 

come input, vorrei produrre come output:

Iam
Hello
Test
for
You
Pick
Test

Aggiornamento: ora che la domanda ha molte risposte utili, come potrei procedere per includere anche i seguenti casi?

Inserimento:

IamTestECHO TEST PickFoo BARFull;

Uscita desiderata:

I
am
Test
ECHO
TEST
Pick
Foo
Bar
FULL

Aggiornamento: come dovrei procedere per includere anche il trattino basso?

Inserimento:

IamTestECHO TEST PickFoo BARFull def_python_FunctionTwo;

Uscita desiderata:

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

Risposta accettata:

Per affrontare il tuo secondo esempio, suggerisci un approccio più "basato su regole".
Considera il seguente script Perl (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                                     # 
  • Riga 1:usa Unicode (per elaborare gli accenti, cirillico)
  • Riga 2:sostituisci le non lettere con "\n"
  • riga 3,4,5:regole di break-intraWord (definite da contesto a sinistra, contesto a destra)
  • riga 5:regole di eccezione per "Iam"
  • riga 5:x opzione rende possibile aggiungere commenti in espressioni regolari

Dopo il solito chmod +x camelcaseproc possiamo usarlo come:

$ 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. Cat Line X to Line Y su un file enorme?

  2. Shell test per trovare un motivo in una stringa?

  3. Usare _roff per sottolineare le parole?

  4. Prova un cron job settimanale

  5. Testare in modo efficiente se una porta è aperta su Linux?

speedtest-cli – Test della velocità di Internet nel terminale Linux

Come testare il sistema operativo Plasma Mobile sul tuo computer

Bash Scripting – Dichiarazioni condizionali

Controllo dell'ortografia nella riga di comando di Linux

Array negli script di shell

Inversione del contenuto di una variabile tramite parole