从CSV文件中删除非ASCII字符

69

我想要在原地从文件中删除所有的非ASCII字符。

我找到了一个使用tr命令的解决方案,但我猜我需要在修改后将该文件写回。

我需要在原地进行操作,并且性能相对较好。

有什么建议吗?


你能提供一个使用tr命令的一行代码的链接吗? - Jordan Sitkin
OP可能是指不可打印字符(ctrl-c,Unicode编号U+0002,是ASCII字符)。问题还应该指定区域设置 - 没有这些信息,人们可以(应该?)假设他指的是“C”区域设置。一个天真的答案是去除任何大于0x7f的字节 - 这将保留在C区域设置中不可打印但完全合法的ASCII字符。我因为这些原因而对问题进行了负分评价,这使得它过于模糊。 - Juan
11个回答

0

我很感激在这个网站上找到的技巧。

但是,在我的Windows 10上,我必须使用双引号才能使它工作...

sed -i "s/[\d128-\d255]//g" FILENAME

注意这些事情...

  1. 对于FILENAME,整个路径\名称都需要加引号 这个不行 -- %TEMP%\"FILENAME" 这个可以 -- %TEMP%\FILENAME"

  2. sed会在当前目录中留下临时文件,命名为sed*


注意:此答案适用于gnu sed,但不适用于其他版本的sed(例如bsd)。鉴于此答案中提到的副作用,似乎是一种奇怪的Windows编译版本,试图模拟gnu sed。或者用户正在混淆与无关的shell问题。 - Juan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接