我正在编写unix bash shell脚本。
我想用下划线(“_”)替换文本中的所有无效字符。 我的有效字符列表是a-z,A-Z,“_”和0-9。基本上它是字母数字和_。 在下面的例子中
#!/bin/bash
hostname=soa.ax-123
我希望将变量hostname值替换为soa_ax_123
任何人都可以帮我写入登录信息,找到并用“_”
替换无效字符提前致谢 克里斯
答案 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)