В настоящее время у меня есть сценарий, который генерирует случайные слова для создания паролей. Я запускаю это, выбирая сценарий и сообщая ему, сколько слов я хочу. ./generate_passwords.sh 5
. Это создает пять сильных слов.
Это то, с чем у меня проблемы. Я хочу передать это в sed, который должен взять пробелы между этими словами и заменить их случайными специальными символами. Есть ли способ сделать это?
например ./generate_passwords.sh 5 | sed 's/ //g'
(Это удаляет все пробелы и ничего не вставляет.)
Это должен быть желаемый результат: word#word*word!
Вы можете реализовать следующую логику:
symbols
с символами на случайный выбор((RANDOM % ${#symbols}))
выбрать случайный индексКак это:
s=$(./generate_passwords.sh 5)
symbols='#*!'
while [[ $s == *\ * ]]; do
((index = RANDOM % ${#symbols}))
s=${s/ /${symbols:index:1}}
done
echo "$s"
Я использовал расширение параметра (${s/.../...}
) вместо того sed
. Поскольку это встроенная функция Bash, она будет намного быстрее, чем многократный запуск sed
обработать.
sed 's / // g' удаляет все пробелы и ничего не вставляет, как вы пишете :)
sed 's / / # / g' заменяет все пробелы на dies (#).
Итак, вам нужно
| sed 's/ /\#/' | sed 's/ /*/' | sed 's/ /!/'