非ASCII特殊字符从CSV文件中删除

时间:2019-01-18 17:36:47

标签: linux shell awk

当我在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,因此它向我展示了它并没有删除此字符如何删除它。

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

$