2013-05-14 2 views
4

У меня есть text file с unicode line separator (шестнадцатеричный код 2028).Удаление разделителя линии Unicode в Bash

Я хочу удалить его с помощью bash (я вижу implementations for Python, но не для этого языка). Какую команду я мог бы использовать для преобразования текстового файла (output4.txt), чтобы потерять разделитель строк в Юникоде?

См Vim ниже: enter image description here

ответ

3

Возможно, эта команда тр должна работать:

tr '\xE2\x80\xA8' ' ' <inFile> outFIle 

Рабочий раствор: Благодаря ОП для поиска этого:

sed -i.old $'s/\xE2\x80\xA8/ /g' inFile 
+0

Увы, похоже, это не так. :/ –

+0

Можете ли вы попробовать: 'tr -d '\ x20 \ x28' anubhava

+2

Это закончило работу:' sed -i.old $ 's/\ xE2 \ x80 \ xA8// g' filename' - pretty близко к тому, что у вас было. :) –

1

Вы можете, вероятно, использовать SED:

sed 's/\x20\x28//g' <file_in.txt >file_out.txt 

Для перезаписи исходного файла:

sed -i 's/\x20\x28//g' file.txt 

Редактировать: (См комментарий chepner в) Вы должны убедиться, что у вас есть правильные байты, в зависимости от кодировки, а затем используйте sed для удаления Эм. Вы можете использовать, например. od -t x1 для просмотра шестнадцатеричного дампа и определения кодировки.

+3

2028 является Unicode элемент кода; как он появится в файле, будет зависеть от кодировки. Для UTF-8 последовательность байтов будет '\ xE2 \ x80 \ xA8'. – chepner

3

Я заметил, что на вашем скриншоте вы уже открыли файл в vim, то почему бы просто не сделать замену в vim?

в Vim можно сделать

:%s/(seebelow)//g 

в (seebelow) часть, вы можете набрать:

Ctrl-Vу

+1

Мне нужно автоматизировать его, к сожалению, хотя это очень полезный совет! –

+1

, если у вас есть файл с несколькими суммами, vim также автоматически сделает это. (с -w и -s). но если у вас есть большая группа файлов, оболочка - это правильный путь. – Kent

Смежные вопросы