Unix - 如何替换无效字符?

时间:2013-12-05 23:06:18

标签: regex bash shell

我正在编写unix bash shell脚本。

我想用下划线(“_”)替换文本中的所有无效字符。 我的有效字符列表是a-z,A-Z,“_”和0-9。基本上它是字母数字和_。 在下面的例子中

#!/bin/bash
hostname=soa.ax-123

我希望将变量hostname值替换为soa_ax_123

任何人都可以帮我写入登录信息,找到并用“_”

替换无效字符

提前致谢 克里斯

3 个答案:

答案 0 :(得分:10)

您可以在参数扩展中执行模式替换:

#!/bin/bash
hostname=soa.ax-123
newhostname=${hostname//[^a-zA-Z_0-9]/_}
echo "The fixed hostname is $newhostname"

答案 1 :(得分:0)

您可以使用:

echo $hostname | sed 's/\W/_/g'

答案 2 :(得分:0)

hostname=$(echo soa.ax-123 | sed s/[^a-zA-Z0-9_]/_/g)