#!/bin/bash alphabets=( $(printf '%s' {0..9}) $(printf '%s' {0..9} {a..f}) $(printf '%s' -.: {0..9} {a..z} {A..Z}) ) if [ -n "$1" ]; then regex="$1" else regex='.*' fi while IFS=$(printf '=\n') read -r l r; do printf '%s=' "$l" if printf '%s\n' "$l" \ | grep -qx "${regex}"; then for alphabet in "${alphabets[@]}"; do printf '%s\n' "$r" \ | grep -qx "[${alphabet}:]\+" \ && break done for (( i=0; i<${#r}; i++ )); do c="${r:$i:1}" if [ -n "${alphabet%%*${c}*}" ]; then printf '%s' "${c}" else printf '%s' "${alphabet:$(($RANDOM % ${#alphabet})):1}" fi; done else printf '%s' "$r" fi printf '\n' done