我想使用shell脚本,sed或Perl将非ASCII字符或特定ASCII字符替换为文件中的空格。
首先用文件中的空格替换所有非ASCII字符。我知道我们可以使用下面的命令
perl -pi -e 's/[[:^ascii:]]/ /g'
还有某些ASCII字符,下游无法接受,所以我想用空格替换这些字符。例如,下游不接受值为0x19(EM - 中等结束)的ASCII字符,我想用空格替换它。
此外,我知道一系列ASCII字符,下游有问题,我想用空格替换它们。
我可以获得帮助吗?
注意:我们系统中的Perl版本是5.8.4。我想在Solaris 10机器上进行此练习。
由于
答案 0 :(得分:2)
您可以将它们添加到正则表达式中的字符类中。例如,要删除非ASCII字符,加上\031
- a
范围内的e
和(比方说)字符,您可以写:
perl -pi -e 's/[[:^ascii:]\031a-e]/ /g'
已编辑添加:
符合您的新要求:
我必须用DEC 128 - 148替换非ASCII字符,但DEC 145 - 148和DEC 150-151除外。
你可以写:
perl -pi -e 's/[^[:ascii:]\x91-\x94\x96\x97]/ /g; s/\031/ /g;'
(请注意从[:^ascii:]
“非ASCII字符”更改为[:ascii:]
“ASCII字符”,以及从[...]
更改“任何字符...
”至[^...]
“...
以外的任何字符。”