Можно ли набрать μ в командной строке bash без копирования и вставки?

Если количество уникальных элементов в file2 не слишком велико, то приемлемым решением может быть классический подход обработки обоих файлов с помощью awk , сначала создание массива уникальных элементов в столбце 1 file2 , а затем проверка столбца 1 file1 на членство в массиве, т.е.

awk 'FNR==NR {a[$1]++}; FNR!=NR && a[$1]' file2 file1

Эквивалентный подход с использованием bash 4+ ассоциативных массивов может быть что-то вроде

#!/bin/bash

declare -A a

while read col1 _ ; do
  ((a[$col1]++))
done < file2

while IFS= read -r line; do
  # compare only with 1st column of second file
  read -r col1 _ <<< "$line"
  [[ -n "${a[$col1]}" ]] && printf "$line\n"
done < file1
5
11.12.2018, 12:41
3 ответа

Да есть хоть эта четверка (пятерка? )способы:

  1. AltGr
    Сделайте свою раскладку клавиатуры English (international AltGr dead keys).
    Затем правая клавишаAlt — это клавиша AltGr . Нажатие AltGr-m сгенерирует µ. Многие другие клавиши также генерируют другие символы :AltGr -для ßи Shift -AltGr -для §.

    Существует отдельная раскладка клавиатуры для консоли (настоящей консоли на AltCtrlF1 до F6)и одна для графического интерфейса в X Изменение любого из них зависит от вашего дистрибутива (CentOS, Fedora, Debian и т. д. )и Диспетчера отображения (gnome, kde, xfce и т. д. ). Например, установка xfce4-xkb-pluginпозволит с помощью кнопки на панели настроить клавиатуру и переключаться между несколькими раскладками клавиатуры для X в XFCE.

  2. Написать
    Сделайте какую-нибудь клавишу клавишей Compose . Затем, нажав Compose , отпустив ее, нажав / , отпустив ее, а затем u сгенерирует µ.

    Определение клавиши Composeобычно выполняется с помощью xkbили апплета раскладки клавиатуры.
    Например, в Gnome обычно доступно в разделе «Регион и язык» или, может быть, Простое переключение раскладки клавиатуры .

  3. Юникод
    Существует общий способ ввода любого символа Unicode (, если ваша консоль поддерживает его ). Да, любая кодовая точка из 1 111 998 возможных символов(видна, если ваш шрифт (s )может их нарисовать ). Нажмите, как один аккорд (одновременно)ShiftCtrlu , отпустите их (Вероятно, появится подчеркнутый u̲ ), затем введите b5, который кодовая точка Unicode (всегда в шестнадцатеричном формате )для символа. И чтобы закончить, введите пробел или введите (хотя бы ).

  4. Строка чтения
    В приглашении bash (, поскольку вы отметили вопрос ), можно использовать readline для создания µ(mu).

     bind '"\eu": "µ"'
    

    Или добавьте строку:

     "\eu": "µ"
    

    до ~/.inputrc, прочитайте его с помощью Alt-xAlt-r или запустите новую оболочку bash (выполнитеbash)и когда вы наберете:

    Альт-u

    Появится µ.

  5. Метод ввода
    Наверное, слишком много для такого короткого ответа.


Ошибка :Технически символ, запрошенный в вопросе, был Unicode \U3bc, в то время как этот ответ предоставил решения для \Ub5. Да, они разные, моя ошибка, извините.

 $ unicode $(printf '\U3bc\Ub5')
 U+03BC GREEK SMALL LETTER MU
 UTF-8: ce bc UTF-16BE: 03bc Decimal: &#956; Octal: \01674
 μ (Μ)
 Uppercase: 039C
 Category: Ll (Letter, Lowercase)
 Unicode block: 0370..03FF; Greek and Coptic
 Bidi: L (Left-to-Right)

 U+00B5 MICRO SIGN
 UTF-8: c2 b5 UTF-16BE: 00b5 Decimal: &#181; Octal: \0265
 µ (Μ)
 Uppercase: 039C
 Category: Ll (Letter, Lowercase)
 Unicode block: 0080..00FF; Latin-1 Supplement
 Bidi: L (Left-to-Right)
 Decomposition: <compat> 03BC

И технически единственными допустимыми решениями являются числа 3 и 4. В 3 номер Unicode можно изменить с b5на 3bc, чтобы получить даже этот греческий символ. В 4 просто скопируйте правильный символ и готово.

Не в свою защиту, но

  1. Оба b5и 3bcимеют в качестве верхнего регистра 39c. Итак, оба являются строчными буквами MU.
  2. Оба выглядят очень, очень похожими (вероятно, один и тот же глиф из шрифта):

enter image description here

Альтернативы.

  1. AltGr

    Это вполне возможно и уже сделано путем изменения AltGr -g (с xkb )на:

     key <AC05>  { [         g,          G,       dead_greek,   dead_greek ]};
    

    Затем введите AltGr-g m, чтобы получить истинно греческий -mu.

  2. Написать

    Таблица Compose неверна, даже греческий файл Compose (/usr/share/X11/locale/el _GR.UTF -8/Compose )списки:

     <Multi_key> <slash> <u>                 : "µ"   mu
     <Multi_key> <u> <slash>                 : "µ"   mu
     <Multi_key> <slash> <U>                 : "µ"   mu
     <Multi_key> <U> <slash>                 : "µ"   mu
    

    Те составы, что и Greek, которыми они не являются.

    Правильным решением для компоновки является включение ~/.XCompose для греческого языка и перезагрузка.

  3. Юникод

    Работает как опубликовано, с номером Unicode3bc

  4. Строка чтения

    Работает как опубликовано, измените эффективный символ на любой желаемый.

14
27.01.2020, 20:31

Если вы активируете клавишу ввода , вы можете напечатать этот символ с помощью последовательности compose/u , например :µ

Полный набор доступных символов и соответствующих им последовательностей клавиш задокументирован на вики Ubuntu .

4
27.01.2020, 20:31

Использование методов ввода

Методы ввода файла CIN -можно использовать в X11 и в моих пользовательских -пространственных виртуальных терминалах. Один из обычно собираемых -, greek.cin, имеет характер мю. Просто введитеm(в нижнем регистре ), и это единственное преобразование.

Можно изменить greek.cin, чтобы добавить микро, обеспечивая второе преобразование, хотя визуально это будет довольно запутанно, затрудняя выбор правильного во время выбора преобразования, если они оба сопоставляются с m. Лучшее преобразование будет отображать microв U+00B5 :

.
micro    μ

Использование общей вторичной группы ISO 9995

Ваша раскладка клавиатуры X11 или ваш виртуальный терминал могут не реализовывать это, но если это так, то существует стандартная для страны -независимая клавиша последовательность(из два аккорда клавиш )для символа мю, определенного в ISO/IEC 9995:и #x21e8; Группа 2 Выберите B07

  • и #x21e8; Группа 2 Select обычно представляет собой хорду & #x21e7; Уровень 2 Shift + и #x21ee; Уровень 3 Shift , поскольку в спецификации USB HID и других отсутствует код для правильного и #x21e8; Группа 2 Выберите клавишу . Такая клавиша отсутствует на большинстве клавиатур.
  • и #x21ee; Уровень 3 Shift обычно имеет гравировку и #x2325; Опция или и #x21ee; AltGr на клавиатурах с клавишами 105/106/107/109 -или и #x2387; Alt на 104 -клавишных клавиатурах.
  • B07 — это стандартное обозначение ISO/IEC 9995 для физического положения в строке «B» и столбце «07», а ключ там обычно выгравирован M .

Там, где это реализовано,эта так называемая -, называемая общей вторичной группой стандарта ISO/IEC 9995, не должна зависеть от макета выбранной страны и всегда доступна.

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

Использование любых аккордов, определенных в вашей раскладке клавиатуры

Специфика раскладок клавиатуры выходит за рамки этого ответа, и здесь есть много ответов, касающихся их.

Сводка:

Существует раскладка клавиатуры для приложений X11, возможно, есть связанная раскладка клавиатуры для виртуальных терминалов ядра (, если она есть в вашей операционной системе ), и существуют раскладки клавиатуры для пользовательских -пространственных виртуальных терминалов (, если вы используете такой ). Макеты обычно предоставляют такие символы, как аккорд с и #x21e7; Сдвиг 2 уровня или и #x21ee; Уровень 3 Shift в сочетании с основной клавишей клавиатуры.

Некоторые раскладки клавиатуры X11 дополнительно определяют (как необязательное дополнение )клавишу сочинения , которая начинает последовательность клавиш (из нескольких клавишных аккордов ), которые соответствуют таким символам. В обычном наборе композиций X11, задокументированном Дэвидом Моннио несколько лет назад , символ mu представляет собой последовательность ComposeMU или последовательность Compose/У . Обратите внимание, что он объединяется с символом префикса микро.

Обратитесь к картам клавиатуры VT и X11, чтобы узнать, какие аккорды отображаются, если таковые имеются. Проверьте свою конфигурацию, чтобы убедиться, что вы включили опцию создания ключа в X11.

Примеры:

ch, de, it, nlnoраскладки клавиатуры виртуального терминала в FreeBSD предоставляют символ mu как аккорд и #x21ee; Уровень 3 Shift +B07(M):

% sed -n -e '2,5p;/0xb5/p' /usr/share/vt/keymaps/de.kbd                                                         /usr/share/vt/keymaps [pts/4.10009.1]
#                                                         alt
# scan                       cntrl          alt    alt   cntrl lock
# code  base   shift  cntrl  shift  alt    shift  cntrl  shift state
# ------------------------------------------------------------------
  050   'm'    'M'    cr     cr     0xb5   0xb5   cr     cr      C
% 

Но другие карты либо не имеют его, либо определяют другую хорду. В раскладке клавиатуры frэто и #x21e7; Уровень 2 Shift +C12 (ЕВРОПА1):

% sed -n -e '2,5p;/0xb5/p' /usr/share/vt/keymaps/fr.kbd                                                         /usr/share/vt/keymaps [pts/4.10011.1]
#                                                         alt   
# scan                       cntrl          alt    alt   cntrl lock
# code  base   shift  cntrl  shift  alt    shift  cntrl  shift state
# ------------------------------------------------------------------
  043   '*'    0xb5   nop    nop    '#'    '~'    nop    nop     O
%

И вообще не отображается в раскладке клавиатуры uk. Ни один из них не имеет префиксного символа микро.

Другие методы

Другие методы относятся к библиотекам обработки ввода приложений или к определенным эмуляторам терминала, тогда как методы ввода и раскладки клавиатуры X11/VT не зависят от приложения -.

Некоторые эмуляторы терминала предоставляют другие способы ввода символов по их кодовым точкам Unicode. Конечно, Readline можно настроить для отображения входных последовательностей на этот символ, как и ZLE. И вы уже упомянули VIM в вопросе.

Дополнительная литература

3
27.01.2020, 20:31

Теги

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