Ваш код:
awk -F, '{ if ($1 == "201731") { print } }' file.dat
Это почти правильно, за исключением того факта, что $1
при чтении с ,
в качестве разделителя полей также будет содержать двойные кавычки, присутствующие в данных. Другие попытки аналогичны по своей природе, но я не уверен, что, по вашему мнению, toupper()
будет делать с числом.
Вы можете просто использовать $1 ~ /201731/
для сопоставления первого поля с регулярным выражением (или $1 ~ /^"201731"$/
для полного указания содержимого поля от начала поля до самого конца, чтобы защитить от ложных срабатываний. )или, если вы хотите свериться с фиксированной строкой, а не выполнять сопоставление с регулярным выражением, проверьте поле с \"201731\"
.
Итак, у вас либо
awk -F ',' '$1 ~ /^"201731"$/' file.in
или
awk -F ',' '$1 == "\"201731\""' file.in
To facilitate moving the terminal emulation into userland, while still keeping the TTY subsystem (session management and line discipline) intact, the pseudo terminal or pty was invented.
У парня по имени Линус Акессон есть демистифицированная TTY-страница со всей картинкой. (Я нашел это через Arch Linux wiki ДОБАВЛЕНО :mosvy, кажется, ненавидит это... ).
Несколько дней спустя мне все еще нравится тот ответ, который я привел выше. Даже в википедии есть ссылка. После некоторых обсуждений (см. комментарии, увы )я свободно отредактировал нижеследующее. Различия можно увидеть в кнопке "отредактировано..."..."PTMX" и "TTY Subsystem" являются новыми словами. Хороший чиновник (? )источник:drivers/tty/Kconfig
И «эмуляция терминала в пользовательской области » — это то, что делают xterm (и т. д. ). XTerm, вместе с X и оконным менеджером, должен сделать так, чтобы «bash» работал на Linux VT.
Прямым следствием того, что X заботится обо всем, что находится в пользовательской среде, является :после запуска многих xterm/bash, каждый xterm подключается к pts/0, а каждый bash к pts/1, pts/2,.. Я также могу запустить дочерние xterms/bash изнутри одного с помощью xterm &
. Или запустите новый слой оболочки в xterm с помощью bash
. В любом случае пользователь вскоре теряет связь с зависимостями ---, поэтому легко с помощью PTY создавать окна с оболочками.
VT (= VC )из "подсистемы TTY" используются более статические , с 64 в качестве (в первую очередь? ), и только 6 настроены после загрузки. С точки зренияgetty/agetty
("открывает tty-порт,..." )это может выглядеть иначе.
Вот мои специальные файлы с мажором 5 в/dev
:
crw-rw-rw- 1 root tty 5, 0 tty
crw------- 1 root root 5, 1 console
crw-rw-rw- 1 root tty 5, 2 ptmx
Пары? Этот термин, по-видимому, происходит от BSD-стиля PTY, когда каждый новый pty помещался в файл "p" и "s". В UNIX98 _PTY это:
/dev/ptmx :MX как MULTIPLEX(не MASTER X )для концептуальной главной стороны. И для клиентской стороны /dev/pts/1-n
. Про /dev/pts/0 сейчас ничего не скажу. Один занятый ГЛАВНЫЙ и много занятых ПОДЧИНЕННЫХ.Это скорее отношение 1 -к -n, чем пара.
Эти три специальных файла символьных устройств с major=5 на самом деле являются специальными специальными файлами . Как файлы они мало что делают. Но за каждым файлом устройства стоит какой-то код, и вот он drivers/tty/*.c
. Обработка клавиатуры не имеет большого значения. Это и коммутация ТН, и линейная дисциплина, а может и то и другое одновременно.
Существует каталог /dev/pts/
с другим файлом ptmx и всеми основными файлами = 136 подчиненных устройств. Нормальный /dev/ttyN
имеет мажор=4.
спин-офф из (удален? )комментарии :Это один из ioctl_console
запросов, которые обсуждал другой Q. «tty не является виртуальным терминалом» , говорит С.К. в ioctl VT _GETSTATE...tty не является vt(в последнем комментарии здесь, извините)
VT_GETSTATE
Get global vt state info. argp points to a
struct vt_stat {
unsigned short v_active; /* active vt */
unsigned short v_signal; /* signal to send */
unsigned short v_state; /* vt bit mask */
};
For each vt in use, the corresponding bit in the v_state mem‐
ber is set. (Kernels 1.0 through 1.1.92.)
Изconfig UNIX98_PTY
(Kconfig в драйверах/tty)
Typical programs for the master side are telnet servers and xterms.
Это процессы bash получают /dev/pts/1 -255, а не xterm. xterm и wm являются посредниками между x и bash. Это совместная работа с самого начала xinit wm x
или xinit client -- server display
.