Исходный файл ASCII

Лично я бы рекомендовал хорошую, чистую установку Kubuntu / KDE Desktop Environment, если это то, что вы действительно хотите. Просто создайте резервную копию своей / домашней папки и поместите ее в папку Kubuntu / home при завершении установки.

1
задан 7 February 2016 в 19:39

2 ответа

Вы можете распечатать все строки, отличные от ASCII, используя мой скрипт Python 3, который я размещаю на GitHub здесь:

GitHub: ByteCommander / encoding-check

Вы можете либо клонировать или загружать весь репозиторий, либо просто сохранять файл encoding-check и делать его исполняемым с помощью chmod +x encoding-check.

Затем вы можете запускать его так: файл проверяется только как аргумент:

./encoding-check FILENAME, если он находится в вашем текущем рабочем каталоге или ... /path/to/encoding-check FILENAME, если он находится в /path/to/ или ... encoding-check FILENAME, если он находится в каталоге, который является частью $PATH, т. е. /usr/local/bin или ~/bin.

Без каких-либо необязательных аргументов он распечатает каждую строку и ее номер, где он найдет символы, отличные от ASCII. Наконец, есть сводная строка, в которой рассказывается, сколько строк было у файла в целом и сколько из них содержало символы, отличные от ASCII.

Этот метод гарантированно правильно декодирует все символы ASCII и обнаруживает все, что есть определенно не ASCII.

Вот пример, выполняемый в файле, содержащем первые 20 строк вашего install.en.txt:

$ ./encoding-check install-first20.en.txt
     9: Appendix��F, GNU General Public License.
    14: (codename "���Xenial Xerus���"), for the 64-bit PC ("amd64") architecture. It also
    18: ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������
--------------------------------------------------------------------------------
20 lines in 'install-first20.en.txt', thereof 3 lines with non-ASCII characters.

. Однако в сценарии есть несколько дополнительных аргументов для настройки проверили кодировку и формат вывода. Просмотрите справку и попробуйте:

$ encoding-check -h
usage: encoding-check [-h] [-e ENCODING] [-s | -c | -l] [-m] [-w] [-n] [-f N]
                     [-t]
                     FILE [FILE ...]

Show all lines of a FILE containing characters that don't match the selected
ENCODING.

positional arguments:
  FILE                  the file to be examined

optional arguments:
  -h, --help            show this help message and exit
  -e ENCODING, --encoding ENCODING
                        file encoding to test (default 'ascii')
  -s, --summary         only print the summary
  -c, --count           only print the detected line count
  -l, --lines           only print the detected lines
  -m, --only-matching   hide files without matching lines from output
  -w, --no-warnings     hide warnings from output
  -n, --no-numbers      do not show line numbers in output
  -f N, --fit-width N   trim lines to N characters, or terminal width if N=0;
                        non-printable characters like tabs will be removed
  -t, --title           print title line above each file

Как --encoding, каждый кодек, который знает Python 3, действителен. Просто попробуйте один, в худшем случае вы получите небольшое сообщение об ошибке ...

4
ответ дан 23 May 2018 в 13:43
  • 1
    Извините, это не ACSII, который я ищу. Может " ascii " будет использоваться в вашем скрипте python вместо «utf-8» ?? Это все моя ошибка, даже документация wiki, как я это написал. Если ваш сценарий можно заставить работать, я добавлю его в исходные файлы с основными файлами сервера, так как, вероятно, более вероятно, что члены команды документов будут знать Python, чем c. – Doug Smythies 7 February 2016 в 04:59
  • 2
    изменение к "ascii" прекрасно работает. Благодарю. Я отредактирую ответ в ближайшее время. – Doug Smythies 7 February 2016 в 05:07
  • 3
    @DougSmythies См. Мое редактирование. Я сделал скрипт более гибким в своем форматировании вывода. И теперь вы можете выбрать нужную кодировку для проверки из командной строки. – Byte Commander 7 February 2016 в 20:37
  • 4
    Большое спасибо за вашу тяжелую работу над этим. Я поднял ваш ответ. Я обновил вики с ответом @muru (вроде), но мог бы включить ваш скрипт в каталог сценариев исходных файлов сервера Ubuntu, как универсальное решение / инструмент. Строка кредитного комментария будет добавлена, если она есть. – Doug Smythies 7 February 2016 в 21:08
  • 5
    Добавлена ​​поддержка нескольких файлов. Теперь вы можете сделать, например. [F1] – Byte Commander 7 February 2016 в 21:15

Эта команда Perl в основном заменяет эту команду grep (недостающее количество цветов):

perl -ne '/[\x80-\xFF]/&&print($ARGV."($.):\t^".$_)' *.xml
n: заставляет Perl принимать следующий цикл вокруг вашей программы, что делает его итерация по аргументам имени файла несколько как sed -n или awk:
LINE:
  while (<>) {
      ...             # your program goes here
  }
-e: может использоваться для ввода одной строки программы. /[\x80-\xFF]/&&print($ARGV."($.):\t^".$_): Если строка содержит символ в диапазоне \x80-\xFF, печатает имя текущего файла, номер строки текущего файла, строку :\t^ и содержимое текущей строки.

Вывод в каталоге примеров, содержащий файл-образец в вопросе, и файл, содержащий только ààààà и символ новой строки:

% perl -ne '/[\x80-\xFF]/&&print($ARGV."($.):\t^".$_)' file | head -n 10
file(9):    ^Appendix F, GNU General Public License.
file(14):   ^(codename "‘Xenial Xerus’"), for the 64-bit PC ("amd64") architecture. It also
file(18):   ^â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”â”
file(330):  ^when things go wrong. The Installation Howto can be found in Appendix A, 
file(337):  ^Chapter 1. Welcome to Ubuntu
file(359):  ^1.1. What is Ubuntu?
file(368):  ^  • Ubuntu will always be free of charge, and there is no extra fee for the "
file(372):  ^  • Ubuntu includes the very best in translations and accessibility
file(376):  ^  • Ubuntu is shipped in stable and regular release cycles; a new release will
file(380):  ^  • Ubuntu is entirely committed to the principles of open source software
% perl -ne '/[\x80-\xFF]/&&print($ARGV."($.):\t^".$_)' file1
file1(1):   ^ààààà
2
ответ дан 23 May 2018 в 13:43

Другие вопросы по тегам:

Похожие вопросы: