GNU/Linux >> Tutoriels Linux >  >> Linux

Éléments séparés des mots Camelcase ?

Existe-t-il un moyen de diviser les mots en CamelCase aux limites "internes" des mots dans un texte ?

Par exemple, étant donné la chaîne :

IamHelloTest forYou PickTest; 

en entrée, je voudrais produire en sortie :

Iam
Hello
Test
for
You
Pick
Test

Mise à jour : maintenant que la question a de nombreuses réponses utiles, comment procéder pour inclure également les cas suivants ?

Entrée :

IamTestECHO TEST PickFoo BARFull;

Sortie souhaitée :

I
am
Test
ECHO
TEST
Pick
Foo
Bar
FULL

Mise à jour : comment procéder pour inclure également le trait de soulignement ?

Entrée :

IamTestECHO TEST PickFoo BARFull def_python_FunctionTwo;

Sortie souhaitée :

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

Réponse acceptée :

Pour traiter votre deuxième exemple, suggérez une approche plus "basée sur des règles".
Considérez le script Perl suivant (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                                     # 
  • Ligne 1 :utilisez Unicode (pour traiter les accents, cyrillique)
  • Ligne 2 :remplacez les non-lettres par "\n"
  • ligne 3,4,5 : règles break-intraWord (définies par le contexte gauche, le contexte droit)
  • ligne 5 :règles d'exception pour "Iam"
  • ligne 5 :x option permet d'ajouter des commentaires dans les expressions régulières

Après l'habituel chmod +x camelcaseproc nous pouvons l'utiliser comme :

$ 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. Test de messagerie PHP simple

  2. Comment tester un script PHP

  3. Tester une tâche cron hebdomadaire

  4. Tester efficacement si un port est ouvert sous Linux ?

  5. Inverser le contenu d'une variable par des mots

speedtest-cli - Test de vitesse Internet dans le terminal Linux

Comment tester Plasma Mobile OS sur votre ordinateur

Script Bash - Instructions conditionnelles

Vérification de l'orthographe dans la ligne de commande Linux

Tableaux dans les scripts shell

Trouver des mots répétés dans un texte