GNU/Linux >> Tutoriels Linux >  >> Linux

Obtenir toutes les combinaisons possibles d'un mot en lettres minuscules/majuscules ?

Je veux écrire un script bash pour imprimer toutes les permutations possibles en minuscules et majuscules d'un certain mot, par ex. Harley :

harley
harleY
harlEy
harLey
...
HARLey
HARLEy
HARLEY

Ma solution naïve consiste à écrire une n-ième (n est len(mot)) boucle for imbriquée pour ce mot spécifique :

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

Cependant, je devrais coder à nouveau le script pour un mot différent.

Existe-t-il une meilleure façon d'y parvenir ?

Réponse acceptée :

Une solution légèrement meilleure :

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

Pour une évolutivité totale :

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

Si vous devez absolument avoir un mot par ligne, optez pour

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

merci pour le commentaire de mattdm

La version évolutive correspondante serait :

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

Pour le plaisir, essayez de remplacer "harley" par "supercalifragilisticexpialidocious" Cela fait 5 minutes et mon ordinateur continue de craquer sur celui-ci et ne finira probablement jamais 🙂


Linux
  1. Linux :comment obtenir tous les journaux de connexion du système ?

  2. Obtenir la liste de tous les fichiers par masque dans le terminal ?

  3. Exécuter à nouveau le script si l'entrée est Oui ?

  4. Est-il possible d'obtenir un caractère au niveau du curseur du terminal à l'aide des codes d'échappement Ansi ?

  5. Obtenir une liste simple de tous les disques

Toutes les façons possibles de réduire la surchauffe des ordinateurs portables sous Linux

Comment changer toutes les occurrences d'un mot dans tous les fichiers d'un répertoire

Est-il possible d'installer tous les packages à partir d'un référentiel APT ?

Afficher les points de code unicode pour toutes les lettres du fichier sur bash

Comment obtenir uniquement tous les identifiants de processus en cours d'exécution ?

Comment faire fonctionner tous les processus sur chaque cœur de processeur dans Ubuntu ?