GNU/Linux >> Tutoriales Linux >  >> Linux

Obtener todas las combinaciones posibles de una palabra en minúsculas/mayúsculas?

Quiero escribir un script bash para imprimir todas las permutaciones posibles en mayúsculas y minúsculas de una determinada palabra, p. Harley:

harley
harleY
harlEy
harLey
...
HARLey
HARLEy
HARLEY

Mi solución ingenua es escribir un bucle for anidado enésimo (n es len (palabra)) para esta palabra específica:

#!/bin/bash
for a in {h,H}; do
    for b in {a,A}; do
    ...
    done
done

Sin embargo, tendría que codificar el script para una palabra diferente nuevamente.

¿Hay una mejor manera de lograr esto?

Respuesta aceptada:

Una solución un poco mejor:

echo {h,H}{a,A}{r,R}{l,L}{e,E}{y,Y}

Para una escalabilidad completa:

echo harley \
| perl -nle 'print "echo ",
                    join "",map { "{" . lc . "," .uc ."}" } split //' \
| xargs -I {} bash -c "{}"

Si absolutamente debe tener una palabra por línea, vaya con

for w in {h,H}{a,A}{r,R}{l,L}{e,E}{y,Y};do echo $w;done

gracias al comentario de mattdm

La versión escalable correspondiente sería:

echo harley \
| perl -nle 'print join "",map { "{" . lc . "," .uc ."}" } split //' \
| xargs -I {} bash -c 'for w in {};do echo $w;done'

Por diversión, intente reemplazar "harley" con "supercalifragilisticexpialidocious". Han pasado 5 minutos y mi computadora todavía está procesando este y probablemente nunca termine 🙂


Linux
  1. ¿Convertir todo el texto de mayúsculas a minúsculas y viceversa?

  2. ¿Obtener una lista de todos los archivos por máscara en la terminal?

  3. Obtener el directorio de inicio por nombre de usuario

  4. Obtener el tamaño de todas las carpetas en el directorio

  5. Obtenga una lista simple de todos los discos

Cómo reemplazar todas las apariciones de una palabra en todos los archivos en la línea de comandos de Linux

3 trucos para obtener la salida de múltiples comandos en la misma fila

Todas las formas posibles de reducir el sobrecalentamiento de la computadora portátil en Linux

Cómo cambiar todas las apariciones de una palabra en todos los archivos de un directorio

Ver puntos de código Unicode para todas las letras en el archivo en bash

¿Cómo hacer que todos los procesos se ejecuten en cada núcleo de CPU en Ubuntu?