2012-12-20 176 views
1

我在grep腳本中輸入命令並將結果存儲在變量中。從shell腳本中的變量中刪除非ASCII字符

有一個非常特殊的情況,由於grep使用的分析邏輯,此變量可能具有非ascii字符。

問:如何從shell腳本中的這個變量中刪除這些非ascii字符,以便我可以在後續命令中使用該變量?

回答

6

如果你正在使用bash,如果你的變量稱爲var,然後

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

將展開爲var,並刪除所有非ascii字符。所以:

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

應該做的。 (這絕對是最好的方法:沒有子shell,也沒有外部進程對bash的分支)。

+0

+1不調用另一個進程 – Sudar

4

假設你的變量VAR,試試這個:

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

這應該刪除非ASCII字符

+0

我正在選擇其他答案,因爲這不涉及外部過程。 Upvoted雖然:) – Sudar

相關問題