標準入力から制御文字 (^C、^A など) を削除し、基本的な bash、perl、およびその他の Linux ツールのみを使用して標準出力に出力したいと考えています。
私が今していることは、
(something) | sed 's/[[:cntrl:]]//g' | (something else)
これまでは機能していましたが、タブレータも削除されることがわかったので、それらを保持したいと思います。
それで、何か他のものがありますか?
Skip/remove non-ascii character with sedからの2番目の回答を変更すると、この動作する sed スクリプトが得られました
sed 's/[^[:print:]\t]//'g
動作しているようです (「ASCII 以外」の部分は間違っていますが、Unicode は削除されません)。
LANG=en_US.UTF-8
Unicode を機能させるには、環境変数をandとして設定LC_CTYPE="en_US.UTF-8"
(およびエクスポート) する必要があります。