В Linux команда column
используется для отображения содержимого файла в столбцах. Входные данные могут быть взяты из стандартного ввода или из файла.
Содержание
Введение
Команда column
— простая служебная утилита командной строки, предназначенная для вывода содержимого файла в столбцах.
Эта команда в основном разбивает ввод на несколько столбцов. Строки заполняются раньше столбцов. По умолчанию утилита игнорирует пустые строки ввода, если не используется опция -e
.
Данные отображаются в нескольких столбцах и их отображение происходит слева направо, то есть сначала добавляются данные в левый столбец, а затем — в правый.
Синтаксис
$ column [опции] [<файл>...]
Параметры
-t, --table
Создать таблицу
-n, --table-name
Имя таблицы для вывода JSON
-O, --table-order
Указать порядок выходных столбцов
-C, --table-column
Определить столбец
-N, --table-columns
Имена столбцов, разделённых запятыми
-l, --table-columns-limit
Максимальное количество входных столбцов
-E, --table-noextreme
Не считать длинный текст из столбцов по ширине столбца
-d, --table-noheadings
Не печатать заголовок
-m, --table-maxout
Заполнить все доступное пространство
-e, --table-header-repeat
Повторять заголовок для каждой страницы
-H, --table-hide
Не печатать столбцы
-R, --table-right
Выровнять текст по правому краю в этих столбцах
-T, --table-truncate
При необходимости обрезать текст в столбцах
-W, --table-wrap
Переносить текст в столбцы, когда это необходимо
-L, --keep-empty-lines
Не игнорировать пустые строки
-J, --json
Использовать для таблицы формат вывода JSON
-r, --tree
Столбец для использования древовидного вывода таблицы
-i, --tree-id
Идентификатор строки для указания отношения дочернего и родительского элементов
-p, --tree-parent
Родитель (указание отношения дочерний-родительский)
-c, --output-width
Ширина вывода в количестве символов
-o, --output-separator
Разделитель столбцов для вывода таблицы
-s, --separator
Возможные разделители таблиц
-x, --fillrows
Заполнить строки перед столбцами
-h, --help
Отобразить эту справку
-V, --version
Вывести версию
Примеры использования в Linux команды column
Текстовый файл в виде столбцов
Предположим, имеется текстовый файл со следующим содержимым:
oleg@mobile:~:$ cat /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
mail:x:8:12::/var/spool/mail:/usr/bin/nologin
ftp:x:14:11::/srv/ftp:/usr/bin/nologin
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:981:981:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:980:980:systemd Network Management:/:/usr/bin/nologin
systemd-oom:x:979:979:systemd Userspace OOM Killer:/:/usr/bin/nologin
systemd-resolve:x:978:978:systemd Resolver:/:/usr/bin/nologin
systemd-timesync:x:977:977:systemd Time Synchronization:/:/usr/bin/nologin
systemd-coredump:x:976:976:systemd Core Dumper:/:/usr/bin/nologin
uuidd:x:68:68::/:/usr/bin/nologin
oleg:x:1000:984::/home/oleg:/usr/bin/bash
polkitd:x:102:102:PolicyKit daemon:/:/usr/bin/nologin
rtkit:x:133:133:RealtimeKit:/proc:/usr/bin/nologin
avahi:x:975:975:Avahi mDNS/DNS-SD daemon:/:/usr/bin/nologin
mysql:x:974:974:MariaDB:/var/lib/mysql:/usr/bin/nologin
dhcp:x:973:973:DHCP daemon:/:/usr/bin/nologin
lightdm:x:972:972:Light Display Manager:/var/lib/lightdm:/usr/bin/nologin
git:x:971:971:git daemon user:/:/usr/bin/git-shell
saned:x:970:970:SANE daemon user:/:/usr/bin/nologin
geoclue:x:969:969:Geoinformation service:/var/lib/geoclue:/usr/bin/nologin
tss:x:968:968:tss user for tpm2:/:/usr/bin/nologin
tor:x:43:43::/var/lib/tor:/usr/bin/nologin
colord:x:967:967:Color management daemon:/var/lib/colord:/usr/bin/nologin
systemd-journal-upload:x:966:966:systemd Journal Upload:/:/usr/bin/nologin
usbmux:x:140:140:usbmux user:/:/usr/bin/nologin
oleg@mobile:~:$
Предположим, мы хотим отсортировать по разным столбцам записи, разделённые определёнными разделителями. Для отображения информации текстового файла в виде столбцов запускаем утилиту с опцией -t
:
oleg@mobile:~:$ column -t /etc/passwd
root:x:0:0::/root:/bin/bash
bin:x:1:1::/:/usr/bin/nologin
daemon:x:2:2::/:/usr/bin/nologin
mail:x:8:12::/var/spool/mail:/usr/bin/nologin
ftp:x:14:11::/srv/ftp:/usr/bin/nologin
http:x:33:33::/srv/http:/usr/bin/nologin
nobody:x:65534:65534:Nobody:/:/usr/bin/nologin
dbus:x:81:81:System Message Bus:/:/usr/bin/nologin
systemd-journal-remote:x:981:981:systemd Journal Remote:/:/usr/bin/nologin
systemd-network:x:980:980:systemd Network Management:/:/usr/bin/nologin
systemd-oom:x:979:979:systemd Userspace OOM Killer:/:/usr/bin/nologin
systemd-resolve:x:978:978:systemd Resolver:/:/usr/bin/nologin
systemd-timesync:x:977:977:systemd Time Synchronization:/:/usr/bin/nologin
systemd-coredump:x:976:976:systemd Core Dumper:/:/usr/bin/nologin
uuidd:x:68:68::/:/usr/bin/nologin
oleg:x:1000:984::/home/oleg:/usr/bin/bash
polkitd:x:102:102:PolicyKit daemon:/:/usr/bin/nologin
rtkit:x:133:133:RealtimeKit:/proc:/usr/bin/nologin
avahi:x:975:975:Avahi mDNS/DNS-SD daemon:/:/usr/bin/nologin
mysql:x:974:974:MariaDB:/var/lib/mysql:/usr/bin/nologin
dhcp:x:973:973:DHCP daemon:/:/usr/bin/nologin
lightdm:x:972:972:Light Display Manager:/var/lib/lightdm:/usr/bin/nologin
git:x:971:971:git daemon user:/:/usr/bin/git-shell
saned:x:970:970:SANE daemon user:/:/usr/bin/nologin
geoclue:x:969:969:Geoinformation service:/var/lib/geoclue:/usr/bin/nologin
tss:x:968:968:tss user for tpm2:/:/usr/bin/nologin
tor:x:43:43::/var/lib/tor:/usr/bin/nologin
colord:x:967:967:Color management daemon:/var/lib/colord:/usr/bin/nologin
systemd-journal-upload:x:966:966:systemd Journal Upload:/:/usr/bin/nologin
usbmux:x:140:140:usbmux user:/:/usr/bin/nologin
oleg@mobile:~:$
Получаем результат.
Использование разделителей
Для разделения столбцов на основе разделителя :
, а также опций -s
и -t
вводится следующая команда:
oleg@mobile:~:$ column -s ":" -t /etc/passwd
root x 0 0 /root /bin/bash
bin x 1 1 / /usr/bin/nologin
daemon x 2 2 / /usr/bin/nologin
mail x 8 12 /var/spool/mail /usr/bin/nologin
ftp x 14 11 /srv/ftp /usr/bin/nologin
http x 33 33 /srv/http /usr/bin/nologin
nobody x 65534 65534 Nobody / /usr/bin/nologin
dbus x 81 81 System Message Bus / /usr/bin/nologin
systemd-journal-remote x 981 981 systemd Journal Remote / /usr/bin/nologin
systemd-network x 980 980 systemd Network Management / /usr/bin/nologin
systemd-oom x 979 979 systemd Userspace OOM Killer / /usr/bin/nologin
systemd-resolve x 978 978 systemd Resolver / /usr/bin/nologin
systemd-timesync x 977 977 systemd Time Synchronization / /usr/bin/nologin
systemd-coredump x 976 976 systemd Core Dumper / /usr/bin/nologin
uuidd x 68 68 / /usr/bin/nologin
oleg x 1000 984 /home/oleg /usr/bin/bash
polkitd x 102 102 PolicyKit daemon / /usr/bin/nologin
rtkit x 133 133 RealtimeKit /proc /usr/bin/nologin
avahi x 975 975 Avahi mDNS/DNS-SD daemon / /usr/bin/nologin
mysql x 974 974 MariaDB /var/lib/mysql /usr/bin/nologin
dhcp x 973 973 DHCP daemon / /usr/bin/nologin
lightdm x 972 972 Light Display Manager /var/lib/lightdm /usr/bin/nologin
git x 971 971 git daemon user / /usr/bin/git-shell
saned x 970 970 SANE daemon user / /usr/bin/nologin
geoclue x 969 969 Geoinformation service /var/lib/geoclue /usr/bin/nologin
tss x 968 968 tss user for tpm2 / /usr/bin/nologin
tor x 43 43 /var/lib/tor /usr/bin/nologin
colord x 967 967 Color management daemon /var/lib/colord /usr/bin/nologin
systemd-journal-upload x 966 966 systemd Journal Upload / /usr/bin/nologin
usbmux x 140 140 usbmux user / /usr/bin/nologin
oleg@mobile:~:$
Получаем результат.
В качестве разделителя использовались два пробела. В следующей команде используем разделитель ||
:
$ column -s ":" -t -o "||" /etc/passwd
root ||x||0 ||0 || ||/root ||/bin/bash
bin ||x||1 ||1 || ||/ ||/usr/bin/nologin
daemon ||x||2 ||2 || ||/ ||/usr/bin/nologin
mail ||x||8 ||12 || ||/var/spool/mail ||/usr/bin/nologin
ftp ||x||14 ||11 || ||/srv/ftp ||/usr/bin/nologin
http ||x||33 ||33 || ||/srv/http ||/usr/bin/nologin
nobody ||x||65534||65534||Nobody ||/ ||/usr/bin/nologin
dbus ||x||81 ||81 ||System Message Bus ||/ ||/usr/bin/nologin
systemd-journal-remote||x||981 ||981 ||systemd Journal Remote ||/ ||/usr/bin/nologin
systemd-network ||x||980 ||980 ||systemd Network Management ||/ ||/usr/bin/nologin
systemd-oom ||x||979 ||979 ||systemd Userspace OOM Killer||/ ||/usr/bin/nologin
systemd-resolve ||x||978 ||978 ||systemd Resolver ||/ ||/usr/bin/nologin
systemd-timesync ||x||977 ||977 ||systemd Time Synchronization||/ ||/usr/bin/nologin
systemd-coredump ||x||976 ||976 ||systemd Core Dumper ||/ ||/usr/bin/nologin
uuidd ||x||68 ||68 || ||/ ||/usr/bin/nologin
oleg ||x||1000 ||984 || ||/home/oleg ||/usr/bin/bash
polkitd ||x||102 ||102 ||PolicyKit daemon ||/ ||/usr/bin/nologin
rtkit ||x||133 ||133 ||RealtimeKit ||/proc ||/usr/bin/nologin
avahi ||x||975 ||975 ||Avahi mDNS/DNS-SD daemon ||/ ||/usr/bin/nologin
mysql ||x||974 ||974 ||MariaDB ||/var/lib/mysql ||/usr/bin/nologin
dhcp ||x||973 ||973 ||DHCP daemon ||/ ||/usr/bin/nologin
lightdm ||x||972 ||972 ||Light Display Manager ||/var/lib/lightdm||/usr/bin/nologin
git ||x||971 ||971 ||git daemon user ||/ ||/usr/bin/git-shell
saned ||x||970 ||970 ||SANE daemon user ||/ ||/usr/bin/nologin
geoclue ||x||969 ||969 ||Geoinformation service ||/var/lib/geoclue||/usr/bin/nologin
tss ||x||968 ||968 ||tss user for tpm2 ||/ ||/usr/bin/nologin
tor ||x||43 ||43 || ||/var/lib/tor ||/usr/bin/nologin
colord ||x||967 ||967 ||Color management daemon ||/var/lib/colord ||/usr/bin/nologin
systemd-journal-upload||x||966 ||966 ||systemd Journal Upload ||/ ||/usr/bin/nologin
usbmux ||x||140 ||140 ||usbmux user ||/ ||/usr/bin/nologin
oleg@mobile:~:$
Заключение
Команда column
— служебная программа командной строки, представленная системой Linux для отображения вывода в табличном формате. В этой небольшой статье были приведены примеры её использования с различными параметрами.