3

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

由于 grep 使用的解析逻辑,有一个非常极端的情况,该变量可能包含非 ascii 字符。

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

4

2 回答 2

8

如果您使用的是 bash,并且您的变量被调用var,那么

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

将扩展为var删除所有非 ASCII 字符。所以:

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

应该做。(这绝对是最好的方法:没有子外壳,也没有外部进程的分支来 bash)。

于 2012-12-20T18:24:49.963 回答
4

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

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

这应该删除非ASCII字符

于 2012-12-20T17:10:51.603 回答