从shell脚本中的变量中删除非ascii字符

时间:2012-12-20 17:01:57

标签: shell non-ascii-characters

我在shell脚本中输出命令的输出并将结果存储在变量中。

由于grep使用的解析逻辑,这个变量可能有非ascii字符,这是一个非常极端的例子。

问题:如何从shell脚本中的这个变量中删除这些非ascii字符,以便我可以在后续命令中使用该变量?

2 个答案:

答案 0 :(得分:6)

如果您正在使用bash,并且您的变量名为var,那么

"${var//[^[:ascii:]]/}"

将扩展为var,并删除所有非ascii字符。所以:

var_non_ascii=${var//[^[:ascii:]]/}

应该这样做。 (这绝对是最好的方法:没有子shell,也没有外部进程用于bash的分叉)。

答案 1 :(得分:4)

假设你的变量是var,试试这个:

var=$(echo $var | sed 's/[^\x00-\x7F]//g')

这应该删除非ascii字符