Логотип

Как использовать команду column в Linux для форматирования текста в виде таблиц

Как использовать команду column в Linux для форматирования текста в виде таблиц

Из этой статьи вы узнаете, как использовать команду column в Linux для форматирования текста в виде таблиц, работы с файлами CSV и создания чистого структурированного вывода. Мы приведем более 15 практических примеров форматирования данных.

При работе с файлами CSV или неструктурированными данными часто требуется преобразовать беспорядочный вывод в удобный для чтения табличный формат.

Команда column — это простая, но мощная утилита, которая преобразует необработанные данные в правильно отформатированные столбцы и таблицы, значительно упрощая проверку и анализ данных.

Команда column входит в состав пакета util-linux и форматирует входные данные в столбцы в соответствии со структурой исходного файла.

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

 

Важные различия в дистрибутивах

Команда column ведет себя по-разному в разных дистрибутивах. В системах на базе Debian традиционно использовалась версия bsdmainutils, а в системах на базе RHEL — версия util-linux, которая новее и предлагает больше возможностей.

Проверьте, какую версию вы используете:

dpkg -S $(which column)  # Debian/Ubuntu

bsdextrautils: /usr/bin/column

 

Чтобы проверить версию column и пакет util-linux:

column --version # только для систем на базе RHEL

 

rpm -qa | grep -i util-linux # RHEL, CentOS, Fedora, Amazon Linux

 

dpkg -l | grep -i util-linux # Debian/Ubuntu

 

Читать  Команда cd в Linux. Примеры использования

Пример вывода в системах на базе Debian.

ii util-linux 2.39.3-9ubuntu6.4

 

Прежде чем переходить к примерам, ознакомьтесь с доступными вариантами:

man column

 

Базовое форматирование таблиц в Linux

Флаг -t создает таблицу на основе входного файла, например /etc/passwd:

column -t /etc/passwd

 

Преобразование данных файла в табличный формат

 

Этот вывод выглядит неаккуратно, потому что в столбце пробелы используются в качестве разделителя по умолчанию. Чтобы исправить это, нужно указать собственный разделитель.

 

Работа с пользовательскими разделителями

Флаг -s указывает пользовательский разделитель для /etc/passwd, в качестве разделителя используется colon:

column -s ":" -t /etc/passwd

 

Установка разделителя-двоеточия для формата таблицы

 

Теперь таблица правильно отформатирована, каждое поле разделено соответствующим символом.

В Ubuntu/Debian версия bsdmainutils обрабатывает несколько соседних разделителей как один (так называемое «жадное» поведение), поэтому используйте флаг -n, чтобы этого избежать:

column -t -s ":" -n /etc/passwd # только для Debian/Ubuntu

 

Форматирование CSV и файлов с разделителями

Для файлов с разделителями-запятыми:

column -t -s "," data.csv

 

Для файлов, разделенных табуляцией:

column -t -s $'\t' data.tsv

 

Для файлов с разделителями-пробелами:

column -t -s "|" data.txt

 

Обработка пустых строк в Linuc

По умолчанию column игнорирует пустые строки во входных данных. Рассмотрим следующий CSV-файл с пустыми строками:

column -t -s ";" dummy.txt

 

Игнорировать Пустые строки While

 

В Debian/Ubuntu для сохранения пустых строк используйте флаг -e:

column -e -t -s "," dummy.txt # только для Debian/Ubuntu

 

Читать  Как запустить скрипт на Python

Пользовательские разделители вывода в Linux

По умолчанию в качестве разделителя вывода используются два пробела. Чтобы изменить это значение, используйте флаг -o (только для систем на базе RHEL):

column -t -s "," -o " | " dummy.txt # только для RHEL

 

Это создает формат вывода с разделителями в виде вертикальной черты, который удобен при подготовке данных к дальнейшей обработке.

В качестве разделителя можно использовать любую строку:

column -t -s ":" -o " → " /etc/passwd | head -5 # Разделитель со стрелкой в Юникоде
column -t -s "," -o "||" data.csv # Двойной разделитель

 

Преобразование строк в столбцы в Linux

Флаг -x преобразует строки в столбцы, заполняя их по горизонтали перед переходом к следующей строке:

column -x fillcols.txt

 

Преобразование строк файла в столбцы

 

Это особенно удобно при компактном отображении списков элементов:

ls /usr/bin | column -x

 

При запуске столбца без флагов по умолчанию используется поведение -x .

 

Работа с выводом команд

Column отлично справляется с форматированием вывода команд на лету.

Форматирование вывода df.

df -h | column -t

 

Форматирование вывода ps.

ps aux | column -t

 

Создание быстрых таблиц на основе данных.

echo -e "Name,Age,City\nAndreyEx,42,MSC\nAlex,31,KR" | column -t -s ","

 

Результат:

Name      Age  City
AndreyEx  42   MSC
Alex      31   KR

 

Форматирование пар «ключ-значение» в стиле JSON

При работе с парами «ключ-значение»:

column -t -s "=" config.ini

 

Переменные среды в удобном для чтения формате:

env | column -t -s "="

Указание ширины столбца

Управляйте шириной вывода с помощью переменной окружения COLUMNS:

COLUMNS=80 column -t -s ":" /etc/passwd | head -5

 

Читать  Отладка сетевых проблем с помощью tcpdump

Команда column автоматически подстраивается под ширину вашего терминала:

echo $COLUMNS # Проверка текущей ширины терминала

 

При изменении размера терминала column соответствующим образом корректируется его вывод. Сравните эти примеры с терминалами разной ширины:

column -t -s ":" /etc/passwd | head -5

 

Изменение размера столбцов

 

Расширенное форматирование таблиц (util-linux 2.23+)

В современных версиях column доступны дополнительные параметры форматирования таблиц:

Укажите, какая строка является заголовком:

column -t -s "," -N "Имя, возраст, город" data.csv

 

Выравнивание столбцов по правому краю

column -t -s "," -R 2,3 data.csv # Выравнивание по правому краю столбцов 2 и 3

 

Усекать столбцы

column -t -s ":" -T 1,6 /etc/passwd # Усечение столбцов 1 и 6

 

Сочетание с другими командами

Column отлично работает в конвейерах:

# Форматирование вывода awk

awk -F: '{print $1,$3,$6}' /etc/passwd | column -t

 

# Форматирование вывода cut

cut -d: -f1,3,6 /etc/passwd | column -t -s ":"

 

# Форматирование вывода grep

grep -v "^#" /etc/services | column -t

 

Создавайте форматированные отчеты на основе данных:

(echo "USER,CPU%,MEM%,COMMAND"; ps aux | awk '{print $1","$3","$4","$11}' | tail -n +2) | column -t -s ","

 

Команда column преобразует беспорядочные данные в удобные для чтения таблицы с минимальными усилиями.

Независимо от того, очищаете ли вы CSV-файлы, форматируете ли файлы конфигурации или делаете вывод команд более удобным для восприятия, команда column обеспечивает гибкость, необходимую для эффективного представления данных.

 

А как вы используете команду column? Поделитесь своими примерами в комментариях ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Редактор: AndreyEx

Рейтинг: 5 (1 голос)
Если статья понравилась, то поделитесь ей в социальных сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Загрузка...

Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала