3

シェルスクリプト内でコマンドの出力をgrepして、結果を変数に格納しています。

grepで使用される解析ロジックが原因で、この変数にASCII以外の文字が含まれる可能性がある非常にまれなケースがあります。

質問:シェルスクリプト内のこの変数からこれらの非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 に答える