2 bash ascii utf non-ascii-characters
在 Bash(在 Ubuntu 上)中,是否有一个命令可以删除无效的多字节(非 ASCII)字符?
我已经尝试过perl -pe 's/[^[:print:]]//g',但它也会删除所有有效的非 ASCII 字符。
如果需要,我可以使用sed或类似的实用程序。awk
问题是 Perl 没有意识到你的输入是 UTF-8;它假设它正在对字节流进行操作。您可以使用该-CI标志告诉它将输入解释为 UTF-8。而且,由于您的输出中将包含多字节字符,因此您还需要告诉 Perl 在写入标准输出时使用 UTF-8,这可以通过使用 标志来完成-CO。所以:
perl -CIO -pe 's/[^[:print:]]//g'
Run Code Online (Sandbox Code Playgroud)