Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 用perl单行程序替换文件中的多个特殊字符_Regex_Perl_Unix_Replace_Special Characters - Fatal编程技术网

Regex 用perl单行程序替换文件中的多个特殊字符

Regex 用perl单行程序替换文件中的多个特殊字符,regex,perl,unix,replace,special-characters,Regex,Perl,Unix,Replace,Special Characters,我试图替换文件中的一些特殊字符(Ascii字符1,5,7,23,26,30)。 我想用一个衬里来做,所以我试着用下面的方法 perl -pi -e 's/([\x1 \x5 \x7 \x17 \x1a \x1e])//eg' dummy.txt 它很好地替换了特殊字符,但我看到文件中也删除了一些空格。例如:1257ST02BW变为1257ST02BW。 如果我单独为单个字符编写替换,则不会发生这种情况,如下所示: perl -pi -e 's/([\x1])//eg' dummy.txt pe

我试图替换文件中的一些特殊字符
(Ascii字符1,5,7,23,26,30)
。 我想用一个衬里来做,所以我试着用下面的方法

perl -pi -e 's/([\x1 \x5 \x7 \x17 \x1a \x1e])//eg' dummy.txt
它很好地替换了特殊字符,但我看到文件中也删除了一些空格。例如:
1257ST02BW
变为
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
谁能帮我一下吗。

试试看

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


您已在char类定义中包含空格,因此已将其删除。

尝试使用
/xg
而不是
/eg
perl -pi -e 'tr/\x1\x5\x7\x17\x1a\x1e//d' dummy.txt