尝试仅删除非ASCII字符

时间:2013-02-22 23:26:58

标签: regex linux sed tr

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

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

1 个答案:

答案 0 :(得分:38)

建议的解决方案可能会因特定版本的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]以外的所有字符。