GNU/Linux >> Tutoriales Linux >  >> Linux

¿Elementos separados de las palabras Camelcase?

¿Hay alguna manera de dividir las palabras de CamelCase en los límites de palabras "internos" en un texto?

Por ejemplo, dada la cadena:

IamHelloTest forYou PickTest; 

como entrada, me gustaría producir como salida:

Iam
Hello
Test
for
You
Pick
Test

Actualización: ahora que la pregunta tiene muchas respuestas útiles, ¿cómo procedería para incluir también los siguientes casos?

Entrada:

IamTestECHO TEST PickFoo BARFull;

Salida deseada:

I
am
Test
ECHO
TEST
Pick
Foo
Bar
FULL

Actualización: ¿Cómo procedería para incluir también el guión bajo?

Entrada:

IamTestECHO TEST PickFoo BARFull def_python_FunctionTwo;

Salida deseada:

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

Respuesta aceptada:

Para lidiar con su segundo ejemplo, sugiera un enfoque más "basado en reglas".
Considere el siguiente script de 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                                     # 
  • Línea 1:use Unicode (para procesar acentos, cirílico)
  • Línea 2:sustituye las letras que no sean letras por "\n"
  • línea 3,4,5:romper las reglas de intraWord (definidas por el contexto izquierdo, el contexto derecho)
  • línea 5:reglas de excepción para "Soy"
  • línea 5:x opción hace posible agregar comentarios en expresiones regulares

Después del habitual chmod +x camelcaseproc podemos usarlo como:

$ 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. Prueba simple de correo PHP

  2. ¿Prueba de shell para encontrar un patrón en una cadena?

  3. ¿Usar _roff para subrayar palabras?

  4. ¿Probar eficientemente si un puerto está abierto en Linux?

  5. Invertir el contenido de una variable por palabras

speedtest-cli – Prueba de velocidad de Internet en la terminal de Linux

Cómo probar el sistema operativo Plasma Mobile en su computadora

Bash Scripting - Declaraciones condicionales

Comprobación de la ortografía en la línea de comandos de Linux

Matrices en scripts de Shell

Encuentra palabras repetidas en un texto