我正在尝试操作文本文件并从文本中删除非ASCII字符。我不想删除该行。我只想删除有问题的字符。我想让以下表达式起作用:
sed '/[\x80-\xFF]/d'
答案 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]
以外的所有字符。