シェルスクリプト内でコマンドの出力をgrepして、結果を変数に格納しています。
grepで使用される解析ロジックが原因で、この変数にASCII以外の文字が含まれる可能性がある非常にまれなケースがあります。
質問:シェルスクリプト内のこの変数からこれらの非ASCII文字を削除して、後続のコマンドで変数を使用できるようにするにはどうすればよいですか?
シェルスクリプト内でコマンドの出力をgrepして、結果を変数に格納しています。
grepで使用される解析ロジックが原因で、この変数にASCII以外の文字が含まれる可能性がある非常にまれなケースがあります。
質問:シェルスクリプト内のこの変数からこれらの非ASCII文字を削除して、後続のコマンドで変数を使用できるようにするにはどうすればよいですか?
bashを使用していて、変数が呼び出されvar
た場合、
"${var//[^[:ascii:]]/}"
var
すべての非ASCII文字が削除されてに展開されます。それで:
var_non_ascii=${var//[^[:ascii:]]/}
する必要があります。(これは間違いなく最良の方法です。サブシェルや、bashする外部プロセスへのフォークはありません)。
変数がvarであると仮定して、これを試してください。
var=$(echo $var | sed 's/[^\x00-\x7F]//g')
これにより、ASCII以外の文字が削除されます