我正在尝试^@
从文件中的记录中删除不可打印的字符(例如)。由于使用循环的时间过多,因此无法使用cat来记录文件的容量太大。我尝试使用
sed -i 's/[^@a-zA-Z 0-9`~!@#$%^&*()_+\[\]\\{}|;'\'':",.\/<>?]//g' FILENAME
但仍然^@
不会删除字符。我也尝试使用
awk '{ sub("[^a-zA-Z0-9\"!@#$%^&*|_\[](){}", ""); print } FILENAME > NEW FILE
但这也没有帮助。
有人可以建议其他方法来删除不可打印的字符吗?
已使用,tr -cd
但正在删除重音字符。但是它们是文件中必需的。
也许您可以使用的补码[:print:]
,其中包含所有可打印的字符:
tr -cd '[:print:]' < file > newfile
如果您的的版本tr
不支持多字节字符(似乎很多字符不支持),那么这对我来说适用于GNU sed(具有UTF-8语言环境设置):
sed 's/[^[:print:]]//g' file