Regex 用文件中的空格替换非ASCII字符或特定ASCII字符
我想使用shell脚本、sed或Perl将非ASCII字符或特定ASCII字符替换为文件中的空格 首先是用文件中的空格替换所有非ASCII字符。我知道我们可以用下面的命令Regex 用文件中的空格替换非ASCII字符或特定ASCII字符,regex,perl,unix,sed,solaris,Regex,Perl,Unix,Sed,Solaris,我想使用shell脚本、sed或Perl将非ASCII字符或特定ASCII字符替换为文件中的空格 首先是用文件中的空格替换所有非ASCII字符。我知道我们可以用下面的命令 perl -pi -e 's/[[:^ascii:]]/ /g' 还有一些下游无法接受的ASCII字符,所以我想用空格替换这些字符。例如,下游不接受值为0x19(EM-媒体结尾)的ASCII字符,我想用空格替换它 另外,我知道下游有问题的ASCII字符的范围,我想用空格替换它们中的每一个 我能得到帮助来完成这个任务吗 注意:
perl -pi -e 's/[[:^ascii:]]/ /g'
还有一些下游无法接受的ASCII字符,所以我想用空格替换这些字符。例如,下游不接受值为0x19(EM-媒体结尾)的ASCII字符,我想用空格替换它
另外,我知道下游有问题的ASCII字符的范围,我想用空格替换它们中的每一个
我能得到帮助来完成这个任务吗
注意:我们系统中的Perl版本是5.8.4。我想在Solaris 10计算机上执行此练习
谢谢您可以将它们添加到正则表达式中的character类中。例如,要删除非ASCII字符,加上
\031
和(比如)范围a
-e
中的字符,您可以编写:
perl -pi -e 's/[[:^ascii:]\031a-e]/ /g'
编辑以添加: 对于您的新要求: 我必须将非ASCII字符替换为DEC 128及以上,DEC 145–148和DEC 150-151除外,替换为空格 你可以写:
perl -pi -e 's/[^[:ascii:]\x91-\x94\x96\x97]/ /g; s/\031/ /g;'
(注意从
[:^ascii:][/code>“非ascii字符”更改为[:ascii:][/code>“ascii字符”,以及从[…]
“任何字符..
”更改为[^…]
“除..
以外的任何字符”)谢谢。假设我必须用空格替换12月128日及以上的ASCII,12月145-148日和12月150-151日除外。那我们怎么做呢?@Chkusi:等等,那没道理。对于Perl来说,[:ascii://code>表示范围在0-127之间的字符。“12月128日及以上的ASCII”本质上是矛盾的。@FtLie:不,那是八进制。(你错过了“和DEC 150-151”部分。)@ruakh抱歉,我不该称之为ASCII。这是因为我必须用DEC 128及以上替换非ASCII字符,DEC 145–148和DEC 150-151除外,用空格替换。@ruakh:在Perl语句中,我需要使用十六进制值,对吗?上面的第二个perl语句中是否缺少“]”?您的问题似乎比您描述的更复杂。请发布更相关的内容,而不是参与聊天来定义您的problem@Borodin当前位置我已经对我的问题给出了正确的描述。我不明白你为什么这么想,然后投了反对票。我已经清楚地解释了这个问题。我面临的问题是如何找到合适的解决方法来覆盖所有角色范围。