尝试仅删除非ASCII字符

M_x*_*x_r 8 regex linux sed tr

我试图操纵文本文件并从文本中删除非ASCII字符.我不想删除该行.我只想删除有问题的字符.我试图让以下表达式工作:

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

spe*_*akr 39

建议的解决方案可能会因特定版本的sed而失败,例如GNU sed 4.2.1.

使用tr:

tr -cd '[:print:]' < yourfile.txt
Run Code Online (Sandbox Code Playgroud)

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

如果你想保持例如换行,只需添加\n:

tr -cd '[:print:]\n' < yourfile.txt
Run Code Online (Sandbox Code Playgroud)

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

tr -cd '[:print:][:cntrl:]' < yourfile.txt
Run Code Online (Sandbox Code Playgroud)

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