Команда column в Linux
columnявляется практичным инструментом командной строки в системах Linux, используемым для форматирования входного текста в многоколоночный вывод. Он может преобразовать изначально беспорядочные текстовые данные в аккуратную табличную форму, значительно улучшая читаемость.
Типичные случаи использования:
- Форматирование вывода команды (например,
ls、psи т.д.) - Упорядочивание данных CSV или TSV
- Создание простых таблиц в терминале
- Выровнять содержимое файла журнала
Базовый синтаксис
column [选项] [文件名]
Если имя файла не указано,columnчитает данные из стандартного ввода.
Общие параметры и
| Опция | Описание |
|---|---|
-t |
Автоматически определять разделитель входных данных и создавать таблицу |
-s sep |
Указать пользовательский разделитель столбцов (по умолчанию — пробельные символы) |
-c width |
Установить общую ширину вывода (в символах) |
-x |
Заполнять сначала строки, затем столбцы (по умолчанию — сначала столбцы, затем строки) |
-o sep |
Указать разделитель столбцов вывода (по умолчанию — два пробела) |
-N names |
Указать имена для каждого столбца (через запятую) |
-n |
Не объединять несколько подряд идущих разделителей |
Примеры использования
Базовое форматирование таблицы
Пример
$ echo -e "Имя Возраст ПолnАлиса 25 ЖnБоб 30 МnЧарли 22 М" | column -t
Имя Возраст Пол
Алиса 25 F
Боб 30 M
Чарли 22 M
Имя Возраст Пол
Алиса 25 F
Боб 30 M
Чарли 22 M
Обработка данных CSV
Пример
$ echo -e "ID,Имя,Отделn101,Алиса,Продажиn102,Боб,ИТ" | column -s, -t
ID Имя Отдел
101 Алиса Продажи
102 Боб ИТ
ID Имя Отдел
101 Алиса Продажи
102 Боб ИТ
Пользовательский разделитель вывода
Пример
$ echo -e "1 2 3n4 5 6" | column -t -o " | "
1 | 2 | 3
4 | 5 | 6
1 | 2 | 3
4 | 5 | 6
Объединение с другими командами
Пример
$ ls -l | head -5 | column -t
total 48
drwxr-xr-x 2 user user 4096 Jan 10 09:30 Desktop
drwxr-xr-x 2 user user 4096 Jan 10 09:30 Documents
drwxr-xr-x 2 user user 4096 Jan 10 09:30 Downloads
total 48
drwxr-xr-x 2 user user 4096 Jan 10 09:30 Desktop
drwxr-xr-x 2 user user 4096 Jan 10 09:30 Documents
drwxr-xr-x 2 user user 4096 Jan 10 09:30 Downloads
Продвинутое использование
Обработка нерегулярных данных
Пример
$ echo -e "Item:Price:StocknApple:1.2:50nOrange:0.8:30" | column -s: -t
Item Price Stock
Apple 1.2 50
Оранжевый 0.8 30
Item Price Stock
Apple 1.2 50
Оранжевый 0.8 30
Указание имён столбцов
Пример
$ echo -e "Alice 25nBob 30" | column -N "Name,Age" -t
Name Age
Алиса 25
Боб 30
Name Age
Алиса 25
Боб 30
Управление шириной вывода
Пример
$ echo -e "1 2 3 4 5n6 7 8 9 10" | column -c 30 -t
1 3 5 7 9
2 4 6 8 10
1 3 5 7 9
2 4 6 8 10
Примечания
- Обработка разделителей: По умолчанию,
columnрассматривает несколько последовательных пробельных символов как один разделитель; использование-nопция может отключить это поведение - Специальные символы: Если данные содержат разделители, такие как пробелы или табуляции, рекомендуется явно указать разделитель
- Вопросы производительности: При обработке больших файлов,
columnможет потребовать много памяти - Выравнивание: Все столбцы по умолчанию выровнены по левому краю; прямое указание выравнивания в настоящее время не поддерживается
Сравнение альтернатив
| Инструмент | Преимущества | Недостатки |
|---|---|---|
column |
Простой и удобный в использовании, встроен в Linux | Относительно базовая функциональность |
awk |
Очень гибкий и мощный | Сложный синтаксис |
pr |
Поддерживает постраничный вывод и управление столбцами | Сложные параметры |
paste |
Подходит для объединения столбцов файла | Ограниченные возможности форматирования |
Практические упражнения
- Возьмите ваш
/etc/passwdфайл и отформатируйте первые 5 строк как таблицу (Совет: используйте:в качестве разделителя) - Попробуйте использовать
columnкоманду для упорядочивания списка процессов (ps auxвывод) - Создайте текстовый файл с тремя столбцами данных и поэкспериментируйте с различными разделителями
-sэффект опции
Пример
# Пример решения для упражнения 1
head -5 /etc/passwd | column -s: -t
head -5 /etc/passwd | column -s: -t
Освоивcolumnкоманда, вы можете легко преобразовать беспорядочные текстовые данные в читаемую табличную форму, что очень практично в повседневном системном администрировании и обработке данных.
Другие расширения
Энциклопедия команд Linux