我正在尝试执行以下操作:
obscure ( ) {
local txt="$1"
echo "$txt" | tr '[:alnum:]' '*'
}
如果我这样做:
obscure 'mysecretstring'
我明白了:
**************
我可以使用什么匹配器tr
而不是[:alnum:]
来表示任何字符'?
有没有更好的方法来实施obscure
?我想到的另一个选择是sed
。
答案 0 :(得分:7)
您可以使用纯BASH:
obscure() {
local txt="$1"
echo "${txt//?/*}"
}
"${txt//?/*}"
会将$txt
中的每个字符替换为*
测试它:
obscure 'mysecretstring3123213213'
************************
obscure mysecretstring
**************
obscure '!@#$%^&*()_+=-'
**************
obscure '中文版'
***