non ascii special char удалить из файла csv - PullRequest
0 голосов
/ 18 января 2019

Пока я редактирую csv-файл в linux, специальный символ выглядит как StackOverflow, Unixbox, запрос. Мой запрос, как удалить из файла CSV.

Ввод: переполнение стека, Unixbox, запрос Вывод: £ stackoverflow, £ unixbox, £ query

Наблюдения за linux box: в настоящее время настройка перевода окна в Linux - ISO-8859-1, в то время как я изменяю настройку окна ---> translation -> UTF-8, затем открываю тот же файл, используя vi editior  char исчезает. Я также попробовал команду iconv но это не сработало. Это может быть причиной того, что я убедил файл ISO-8859-1 в UTF-8, но по умолчанию для Linux установлено значение ISO-8859-1, поэтому он показывает мне, что не удаляет этот символ . Как справиться с этим, чтобы удалить то же самое.

1 Ответ

0 голосов
/ 19 января 2019

Вы можете попробовать приведенное ниже решение 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
$

EDIT:

Для удаления просто используйте

$ 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

$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...