Использование команды tr с диапазонами символов

Для этого вы можете использовать scp или WinSCP. Альтернативой может быть настройка общих папок между VirtualBox и главной машиной.

У меня нет VirtualBox, но для копирования с моего хост-компьютера на его гостей KVM я использую:

scp <filename> guest:

В конце нужно: ':', чтобы scp знаете, что он копирует на «другую» машину, а не на главную машину. Команда для виртуальной виртуальной машины, вероятно, такая же.

Я нашел здесь более подробное объяснение, но поскольку я сам не использую VirtualBox, я не могу проверить его.

1
задан 9 November 2017 в 05:55

3 ответа

Вы используете UTF-8. Ура! ASCII и по расширению UTF-8 (поскольку ребята UTF пытались сделать его надмножеством ASCII), имеет алфавиты в алфавитном порядке без пробелов, поэтому a-z содержит все обычные строчные буквы и ничего больше и т. Д. .

Однако это не обязательно должно быть истинным для какой-либо другой кодировки. Классическим примером является EBCDIC:

Разрывы между буквами, сделанные простым кодом, которые работали в ASCII, терпят неудачу в EBCDIC. Например, for (c='A';c<='Z';++c) установил c на 26 букв в алфавите ASCII, но 40 символов, включая несколько неназначенных в EBCDIC. Исправление этого требовало усложнения кода вызовами функций, которые сильно противостояли программисты.

Хотелось бы думать, что никто больше не использует такие странные вещи, но кто знает?

GNU tr не поддерживает Unicode, AFAIK, но для программ, которые делают [[:upper:]], также будут соответствовать символам Юникода, которые считаются прописными буквами, например, полной шириной «A» или A с акцентом: À.

$ printf "%s\n" A a A À | grep '[[:upper:]]'
A
A
À
$ printf "%s\n" A a A À | grep '[A-Z]'   # I'm also using Unicode, so grep tries to be friendly
A
À
$ printf "%s\n" A a A À | LC_ALL=C grep '[A-Z]'
A 
1
ответ дан 22 May 2018 в 16:23
  • 1
    Вопрос: Является ли верхний регистр A с акцентом, который вы использовали в вашем примере unicode? Или это просто обычный капитал A с акцентом? – John_Patrick_Mason 9 November 2017 в 06:23
  • 2
  • 3
    Таким образом, для систем, использующих UTF-8, À включен в набор символов [A-Z], но не для полной ширины «A»? Извините, я все еще пытаюсь понять, что такое кодирование. – John_Patrick_Mason 9 November 2017 в 06:40
  • 4
    Это отчасти зависит от локали. В какой бы языковой программе я ни находился (вероятно, en_GB), grep обрабатывает правила сортировки как таковые, что À сравнивается с A. Может получать разные результаты в разных локалях. – muru 9 November 2017 в 06:52
  • 5
    Кодирование @John_Patrick_Mason - невероятно сложная тема. Я не ожидал, что вы это поймете из полдюжины ответов и комментариев. Узнайте, как вы идете. – muru 9 November 2017 в 06:53

Вы используете UTF-8. Ура! ASCII и по расширению UTF-8 (поскольку ребята UTF пытались сделать его надмножеством ASCII), имеет алфавиты в алфавитном порядке без пробелов, поэтому a-z содержит все обычные строчные буквы и ничего больше и т. Д. .

Однако это не обязательно должно быть истинным для какой-либо другой кодировки. Классическим примером является EBCDIC:

Разрывы между буквами, сделанные простым кодом, которые работали в ASCII, терпят неудачу в EBCDIC. Например, for (c='A';c<='Z';++c) установил c на 26 букв в алфавите ASCII, но 40 символов, включая несколько неназначенных в EBCDIC. Исправление этого требовало усложнения кода вызовами функций, которые сильно противостояли программисты.

Хотелось бы думать, что никто больше не использует такие странные вещи, но кто знает?

GNU tr не поддерживает Unicode, AFAIK, но для программ, которые делают [[:upper:]], также будут соответствовать символам Юникода, которые считаются прописными буквами, например, полной шириной «A» или A с акцентом: À.

$ printf "%s\n" A a A À | grep '[[:upper:]]' A A À $ printf "%s\n" A a A À | grep '[A-Z]' # I'm also using Unicode, so grep tries to be friendly A À $ printf "%s\n" A a A À | LC_ALL=C grep '[A-Z]' A
1
ответ дан 18 July 2018 в 03:37

Вы используете UTF-8. Ура! ASCII и по расширению UTF-8 (поскольку ребята UTF пытались сделать его надмножеством ASCII), имеет алфавиты в алфавитном порядке без пробелов, поэтому a-z содержит все обычные строчные буквы и ничего больше и т. Д. .

Однако это не обязательно должно быть истинным для какой-либо другой кодировки. Классическим примером является EBCDIC:

Разрывы между буквами, сделанные простым кодом, которые работали в ASCII, терпят неудачу в EBCDIC. Например, for (c='A';c<='Z';++c) установил c на 26 букв в алфавите ASCII, но 40 символов, включая несколько неназначенных в EBCDIC. Исправление этого требовало усложнения кода вызовами функций, которые сильно противостояли программисты.

Хотелось бы думать, что никто больше не использует такие странные вещи, но кто знает?

GNU tr не поддерживает Unicode, AFAIK, но для программ, которые делают [[:upper:]], также будут соответствовать символам Юникода, которые считаются прописными буквами, например, полной шириной «A» или A с акцентом: À.

$ printf "%s\n" A a A À | grep '[[:upper:]]' A A À $ printf "%s\n" A a A À | grep '[A-Z]' # I'm also using Unicode, so grep tries to be friendly A À $ printf "%s\n" A a A À | LC_ALL=C grep '[A-Z]' A
1
ответ дан 24 July 2018 в 17:53

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

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