使用perl one-liner替换文件中的多个特殊字符

时间:2013-12-02 10:12:24

标签: regex perl unix replace special-characters

我正在尝试从文件中替换一些特殊字符(Ascii characters 1,5,7,23,26,30)。 我想用一个单行做,所以我尝试使用以下。

perl -pi -e 's/([\x1 \x5 \x7 \x17 \x1a \x1e])//eg' dummy.txt

它可以很好地替换特殊字符但我看到还有一些空格也从文件中删除。对于Ex:1257 ST 02 BW变为1257ST02BW。 如果我单独为单个字符编写替换,则不会发生这种情况,如下所示:

perl -pi -e 's/([\x1])//eg' dummy.txt
perl -pi -e 's/([\x3])//eg' dummy.txt
.....
.....
perl -pi -e 's/([\x1e])//eg' dummy.txt

任何人都可以帮助我。

1 个答案:

答案 0 :(得分:2)

尝试,

perl -pi -e 's/[\x1\x5\x7\x17\x1a\x1e]//g' dummy.txt

perl -pi -e 'tr/\x1\x5\x7\x17\x1a\x1e//d' dummy.txt

您在char类定义中包含了空格,因此它们已被删除。