sed 方法:
s="The/Sun is red@ .//hack Moon"
sed -E 's/[^[:alnum:][:space:]]+/_/g' <<<"$s"
The_Sun is red_ _hack Moon
Run Code Online (Sandbox Code Playgroud)
[^[:alnum:][:space:]]+ - 匹配除字母数字和空格之外的任何字符序列用途tr为:
echo "The/Sun is red@" | tr -s -c [:alnum:][:blank:] _
Run Code Online (Sandbox Code Playgroud)
[:alnum:][:blank:]代表字母数字字符和空格,-c表示相反。
添加:-s将重复的下划线压缩为一个。