当我在linux特殊字符中编辑csv文件时,看起来像£stackoverflow,£unixbox,£query。我的查询是如何从csv文件中删除Â。
输入:£stackoverflow,£unixbox,£query 输出:£stackoverflow,£unixbox,£query
Linux盒子的观察结果: 目前Linux窗口翻译设置为ISO-8859-1,而我正在更改窗口设置--->翻译-> UTF-8,然后使用消失的vieditiÂchar打开同一文件。我也尝试过iconv命令但没有用。这可能是我将文件ISO-8859-1转换为UTF-8的原因,但是默认情况下linux的设置是ISO-8859-1,因此它向我展示了它并没有删除此字符如何删除它。
答案 0 :(得分:0)
您可以尝试下面的Perl解决方案。这会删除所有不在32到127(包含ascii文本)范围内的序数值。
$ echo "£stackoverflow, £unixbox,£query Output: £stackoverflow, £unixbox,£query" | perl -pe ' s/[^\x20-\x7f]//g '
stackoverflow, unixbox,query Output: stackoverflow, unixbox,query
$
编辑:
要仅删除Â,请使用
$ echo "Â" | perl -pe ' s/./sprintf("%x |",ord($&))/eg ' # Find the underlying ordinal values for Â
c3 |82 |
$ echo "£stackoverflow, £unixbox,£query" | perl -pe ' s/\xc3\x82//g ' #removing it using s///
£stackoverflow, £unixbox,£query
$