ファイル内の一部の印刷できない文字をスペースで置き換える必要があります。
具体的には、(TAB)、(改行)、(CR)を除く、から0x00
までのすべての文字0x1F
0x09
0x0A
0x0D
今までは0x00
キャラクターを入れ替えるだけでした。私の以前のOSはAIX(GNUコマンドなし)だったので、使用できませんsed
(まあ、使用できますが、いくつかの制限がありました)。だから、私はを使用して次のコマンドを見つけましたperl
、それは期待通りに機能しました:
perl -p -e 's/\x0/ /g' $FILE_IN > $FILE_OUT
現在はLinuxを使用しているので、sed
コマンドを使用できると期待していました。
私の質問:
このコマンドはそれらの文字を置き換えるのに適切ですか?私が試しました、そしてそれはうまくいくようですが、私は確かめたいです:
perl -p -e 's/[\x00-\x08\x0B\x0C\x0E-\x1F]/ /g' $FILE_IN > $FILE_OUT
perl -p
として動作すると思ったsed
。それでは、なぜ前のコマンドは機能し(少なくとも失敗しません)、次のコマンドは機能しませんか?sed -e 's/[\x00-\x08\x0B\x0C\x0E-\x1F]/ /g' $FILE_IN > $FILE_OUT
それは私に伝えます:
sed:-e expression#1、char 34:無効な照合文字
perl -p
stdin
希望する操作を行った後の最終製品を印刷します。この場合、それは単なる交換です。sed
の正規表現はとは異なる場合がありperl
ます。