Мне нужно создать скрипт, который будет читать слово как ввод и предоставлять вывод в виде перемешанных букв слова.
Например: входное слово как «Azharudeen» и вывод должен быть как «zAhauredne»
Вы могли сделать это с коротким сценарием Python, указанным на командной строке:
$ python -c "import random,sys; chars=list(sys.argv[1]); random.shuffle(chars); print(''.join(chars))" Azharudeen
neuAazrhed
Не самый элегантный, но это работает:
$ echo `echo "Azharudee" | sed -e 's/./&\n/g' | shuf` | sed -e 's/ //g'
Auerdzhae
Правка (для пояснения):
echo "Azharudee"
помещает это слово в стандартный вывод, который передается в
sed -e 's/./&\n/g'
, который помещает каждый символ на свою собственную строку, заменяя каждый символ на себя, после которого следует символ новой строки, и направляет его в
shuf
, который случайным образом перемешивает заданные строки и помещает их на стандартном выходе.
Между тем этот внешний слой объединяет все вышеперечисленное (как «...») в
echo `...` | sed -e 's/ //g'
«Эхо» приводит к объединению нескольких строк, созданных первым набором команд, в один line, и «sed» заменяет все пробелы ничем.
Обратите внимание, что это могло бы быть визуально лучше, если бы я использовал $(echo ... shuf)
вместо того, чтобы заключать его в серьезные акценты, которые имеют тот же эффект, но труднее увидеть.