【发布时间】:2012-12-20 17:01:56
【问题描述】:
我在 shell 脚本中对命令的输出进行 grep 处理,并将结果存储在一个变量中。
由于 grep 使用的解析逻辑,此变量可能包含非 ascii 字符。
问题:如何在 shell 脚本中从这个变量中删除这些非 ascii 字符,以便在后续命令中使用该变量?
【问题讨论】:
标签: shell non-ascii-characters
我在 shell 脚本中对命令的输出进行 grep 处理,并将结果存储在一个变量中。
由于 grep 使用的解析逻辑,此变量可能包含非 ascii 字符。
问题:如何在 shell 脚本中从这个变量中删除这些非 ascii 字符,以便在后续命令中使用该变量?
【问题讨论】:
标签: shell non-ascii-characters
如果您使用的是 bash,并且您的变量名为 var,那么
"${var//[^[:ascii:]]/}"
将扩展为 var 并删除所有非 ascii 字符。所以:
var_non_ascii=${var//[^[:ascii:]]/}
应该这样做。 (这绝对是最好的方法:没有子外壳,也没有外部进程的分支来 bash)。
【讨论】:
假设你的变量是 var,试试这个:
var=$(echo $var | sed 's/[^\x00-\x7F]//g')
这应该删除非ASCII字符
【讨论】: