9

我正在尝试操作文本文件并从文本中删除非 ASCII 字符。我不想删除该行。我只想删除有问题的字符。我正在尝试使以下表达式起作用:

sed '/[\x80-\xFF]/d'

4

1 回答 1

43

对于特定版本的 sed,建议的解决方案可能会失败,例如 GNU sed 4.2.1。

使用tr

tr -cd '[:print:]' < yourfile.txt

这将删除任何不在[\x20-\x7e].

如果你想保留例如换行符,只需添加\n

tr -cd '[:print:]\n' < yourfile.txt

如果您真的想保留所有ASCII 字符(甚至是控制代码):

tr -cd '[:print:][:cntrl:]' < yourfile.txt

这将删除任何不在[\x00-\x7f].

于 2013-02-23T00:30:21.407 回答