我在shell脚本中输出命令的输出并将结果存储在变量中。
由于grep使用的解析逻辑,这个变量可能有非ascii字符,这是一个非常极端的例子。
问题:如何从shell脚本中的这个变量中删除这些非ascii字符,以便我可以在后续命令中使用该变量?
答案 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字符