当前位置:  开发笔记 > 编程语言 > 正文

尝试从UNIX文件中删除不可打印的字符(垃圾值)

如何解决《尝试从UNIX文件中删除不可打印的字符(垃圾值)》经验,为你挑选了1个好方法。

我正在尝试^@从文件中的记录中删除不可打印的字符(例如)。由于使用循环的时间过多,因此无法使用cat来记录文件的容量太大。我尝试使用

sed -i 's/[^@a-zA-Z 0-9`~!@#$%^&*()_+\[\]\\{}|;'\'':",.\/<>?]//g' FILENAME

但仍然^@不会删除字符。我也尝试使用

awk '{ sub("[^a-zA-Z0-9\"!@#$%^&*|_\[](){}", ""); print } FILENAME > NEW FILE 

但这也没有帮助。

有人可以建议其他方法来删除不可打印的字符吗?

已使用,tr -cd但正在删除重音字符。但是它们是文件中必需的。



1> Tom Fenech..:

也许您可以使用的补码[:print:],其中包含所有可打印的字符:

tr -cd '[:print:]' < file > newfile

如果您的的版本tr不支持多字节字符(似乎很多字符不支持),那么这对我来说适用于GNU sed(具有UTF-8语言环境设置):

sed 's/[^[:print:]]//g' file

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有