我需要用文件中的空格替换一些不可打印的字符。
具体来说,所有字符0x00
最多到0x1F
,但0x09
(TAB),0x0A
(新行),0x0D
(CR)除外
到目前为止,我只需要替换0x00
字符即可。因为我以前的操作系统是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表达式#1,字符34:无效的归类字符
perl -p
stdin
完成所需的操作后打印最终产品,在这种情况下,它只是替换产品。sed
的regex可能与perl
。