Saya ingin menulis skrip bash untuk mencetak semua kemungkinan permutasi huruf besar dan kecil dari kata tertentu, misalnya harley:
harley
harleY
harlEy
harLey
...
HARLey
HARLEy
HARLEY
Solusi naif saya adalah menulis n-th (n is len (word)) bersarang untuk-loop untuk kata khusus ini:
#!/bin/bash
for a in {h,H}; do
for b in {a,A}; do
...
done
done
Namun, saya harus kode script untuk kata yang berbeda lagi.
Apakah ada cara yang lebih baik untuk mencapai ini?
printf '%s\n' {h,H}{a,A}{r,R}{l,L}{e,E}{y,Y}
printf
sed 's/./{&,&}/g'
akan berubahFoo
menjadi{F,F}{o,o}{o,o}
, yang akan sangat tidak berguna. Tetapi tambahkan\U
dan\L
dan Anda mendapatkan huruf besar dan kecil dari setiap huruf; yaitu{F,f}{O,o}{O,o}
,.eval
memberitahu shell untuk memperluas urutan kurung { X , x }.sumber
EDIT 2: Jawaban ini salah. Itu tidak menghasilkan 2 kombinasi seperti yang seharusnya.
EDIT: Saya tidak tahu mengapa, tetapi solusi ini benar - benar cepat dibandingkan dengan solusi perl oleh @ Joeseph R. Ini menjalankan "Supercalifragilisticexpialidocious" dalam waktu kurang dari 0,3 detik!
Inilah celah saya untuk itu:
Menjalankannya:
Silakan garpu dan memodifikasinya, saya yakin itu bisa dioptimalkan. https://gist.github.com/ryanmjacobs/4c02ad80f833dee0c307
sumber
harley
Anda harus memiliki 64 hasil, di manaharLEY
, misalnya?Jika Anda lebih suka menggunakan alat siap alih-alih pengkodean, Anda dapat menggunakan TextMechanic (alat pembangkit permutasi / kombinasi) dan Unit-Conversion.info
sumber