Колонное форматирование текста в Linux

LinuxLinuxBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Колонкация текста (text columnization) — это мощная техника в Linux, которая позволяет организовать и отображать данные в структурированном табличном формате. При работе с обычными текстовыми файлами, содержащими разделенные данные, содержимое может быть трудно читаемым без правильного форматирования. Команда column в Linux решает эту проблему, преобразуя обычный текст в аккуратно отформатированные колонки.

В этом практическом занятии (lab) вы научитесь использовать утилиту column в Linux. Вы узнаете, как отображать содержимое файлов в табличном формате, что делает данные легче читаемыми и анализируемыми. Эти навыки являются обязательными для обработки и визуализации данных в командной строке.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicSystemCommandsGroup -.-> linux/column("Text Columnizing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") subgraph Lab Skills linux/echo -.-> lab-271249{{"Колонное форматирование текста в Linux"}} linux/column -.-> lab-271249{{"Колонное форматирование текста в Linux"}} linux/cat -.-> lab-271249{{"Колонное форматирование текста в Linux"}} linux/cd -.-> lab-271249{{"Колонное форматирование текста в Linux"}} end

Основы команды column

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

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

Создание файла с примером данных

Начнем с создания простого текстового файла, содержащего данные, которые мы хотим отформатировать. Создадим файл с именем powers_list.txt в директории ~/project, который будет содержать названия сверхспособностей и соответствующие имена героев, разделенные двоеточием.

Перейдите в директорию проекта:

cd ~/project

Теперь создайте файл с примером данных, используя команду echo с опцией -e, которая позволяет интерпретировать экранированные последовательности (например, \n для перевода строки):

echo -e "Telekinesis:Jane\nInvisibility:John\nSuper Strength:Max" > ~/project/powers_list.txt

Проверим содержимое только что созданного файла:

cat ~/project/powers_list.txt

Вы должны увидеть такой вывод:

Telekinesis:Jane
Invisibility:John
Super Strength:Max

Эти данные отформатированы с использованием двоеточия (:) в качестве разделителя между названием сверхспособности и именем героя. В таком виде формат не очень удобочитаем.

Использование команды column для форматирования

Теперь используем команду column для преобразования этих данных в более удобочитаемый формат:

column -t -s ':' ~/project/powers_list.txt

В этой команде:

  • column — это утилита, которую мы используем
  • опция -t сообщает команде создать вывод в виде таблицы
  • -s ':' указывает, что разделителем (сепаратором) в нашем входном файле является двоеточие
  • ~/project/powers_list.txt — это путь к нашему входному файлу

После выполнения этой команды вы должны увидеть следующий вывод:

Telekinesis     Jane
Invisibility    John
Super Strength  Max

Обратите внимание, как данные теперь аккуратно выровнены в колонках, что делает их намного легче читаемыми. Команда column автоматически определила ширину каждой колонки на основе содержимого и выровняла все соответствующим образом.

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

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

На этом этапе мы создадим сценарий оболочки (shell script), который упростит процесс колонкации текстовых файлов с разными разделителями. Такой подход обеспечивает большую гибкость и эффективность при работе с различными форматами данных.

Основы сценариев оболочки

Сценарий оболочки — это файл, содержащий команды, которые может выполнить оболочка. Он позволяет автоматизировать задачи, объединяя несколько команд и добавляя логику. В данном случае мы создадим сценарий, который упростит процесс колонкации файлов.

Создание сценария columnize

Создадим сценарий с именем columnize.sh в директории ~/project. Этот сценарий будет принимать два аргумента: имя файла и символ-разделитель.

Сначала перейдите в директорию проекта, если вы еще не находитесь в ней:

cd ~/project

Теперь создайте файл сценария:

touch columnize.sh

Далее откройте файл с помощью текстового редактора nano:

nano columnize.sh

Добавьте в файл следующее содержимое:

#!/bin/bash
## A script to columnize text files

## Check if the correct number of arguments are provided
if [ "$#" -ne 2 ]; then
  echo "Usage: $0 <filename> <delimiter>"
  echo "Example: $0 data.txt :"
  exit 1
fi

## Extract arguments
FILENAME=$1
DELIMITER=$2

## Check if the file exists
if [ ! -f "$FILENAME" ]; then
  echo "Error: File '$FILENAME' does not exist"
  exit 1
fi

## Format and output the content
column -t -s "$DELIMITER" "$FILENAME"

Для сохранения файла в nano нажмите Ctrl+O, затем Enter, а для выхода из nano нажмите Ctrl+X.

Разберем, что делает этот сценарий:

  1. Первая строка (#!/bin/bash) сообщает системе, что для выполнения сценария нужно использовать оболочку bash.
  2. Мы проверяем, были ли переданы ровно два аргумента (имя файла и разделитель).
  3. Мы присваиваем эти аргументы переменным для удобства обращения.
  4. Мы проверяем, существует ли указанный файл.
  5. Наконец, мы используем команду column с указанным именем файла и разделителем.

Сделать сценарий исполняемым

Перед тем как использовать наш сценарий, нужно сделать его исполняемым:

chmod +x ~/project/columnize.sh

Использование сценария columnize

Теперь мы можем использовать наш сценарий для колонкации текстовых файлов. Используем его с уже существующим файлом powers_list.txt:

~/project/columnize.sh ~/project/powers_list.txt :

Вы должны увидеть следующий вывод:

Telekinesis     Jane
Invisibility    John
Super Strength  Max

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

echo -e "Apple,Red,Fruit\nCarrot,Orange,Vegetable\nBlueberry,Blue,Fruit" > ~/project/foods.txt

Теперь используем наш сценарий с этим новым файлом и запятой в качестве разделителя:

~/project/columnize.sh ~/project/foods.txt ,

Вы должны увидеть такой вывод:

Apple      Red     Fruit
Carrot     Orange  Vegetable
Blueberry  Blue    Fruit

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

Работа с различными форматами файлов

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

Работа с файлами в формате CSV

Файлы в формате CSV (Comma-Separated Values, значения, разделенные запятыми) — это распространенный формат для хранения табличных данных. Создадим более сложный файл в формате CSV и используем команду column для его форматирования.

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

cd ~/project
echo -e "Name,Age,Occupation,City\nAlex,28,Engineer,Boston\nSamantha,35,Teacher,Chicago\nMohamed,42,Doctor,New York\nLin,31,Artist,San Francisco" > employees.csv

Проверим содержимое этого файла:

cat employees.csv

Вы должны увидеть:

Name,Age,Occupation,City
Alex,28,Engineer,Boston
Samantha,35,Teacher,Chicago
Mohamed,42,Doctor,New York
Lin,31,Artist,San Francisco

Теперь используем команду column для форматирования этого файла в формате CSV:

column -t -s ',' employees.csv

Вывод должен выглядеть так:

Name       Age  Occupation  City
Alex       28   Engineer    Boston
Samantha   35   Teacher     Chicago
Mohamed    42   Doctor      New York
Lin        31   Artist      San Francisco

Обратите внимание, как команда column аккуратно выровняла данные в колонках, сделав их намного легче читаемыми.

Работа с файлами в формате TSV

TSV (Tab-Separated Values, значения, разделенные табуляцией) — это еще один распространенный формат для табличных данных. Создадим файл в формате TSV и отформатируем его с помощью команды column.

Создайте файл в формате TSV:

echo -e "Product\tPrice\tCategory\nLaptop\t999.99\tElectronics\nBook\t12.50\tMedia\nChair\t149.50\tFurniture" > products.tsv

Посмотрим на его содержимое:

cat products.tsv

Вы должны увидеть:

Product	Price	Category
Laptop	999.99	Electronics
Book	12.50	Media
Chair	149.50	Furniture

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

column -t products.tsv

Вывод должен выглядеть так:

Product  Price   Category
Laptop   999.99  Electronics
Book     12.50   Media
Chair    149.50  Furniture

Использование нашего сценария с разными файлами

Теперь используем наш сценарий columnize.sh с этими разными файлами:

Для файла в формате CSV:

~/project/columnize.sh employees.csv ,

Для файла в формате TSV:

~/project/columnize.sh products.tsv $'\t'

Примечание: Во второй команде мы используем $'\t' для представления символа табуляции. Это специальный синтаксис в bash, который позволяет включать в команду специальные символы, такие как табуляция.

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

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

Резюме

В этом практическом занятии (lab) вы узнали, как использовать команду column для организации и отображения данных в табличном формате, что делает их легче читаемыми и анализируемыми. Вот краткое резюме того, что вы достигли:

  1. Вы изучили базовое использование команды column с опциями -t и -s для форматирования текстовых файлов с разделителями.

  2. Вы создали сценарий оболочки (columnize.sh), который позволяет легко применить форматирование колонок к любому файлу с любым разделителем.

  3. Вы применили эти методы к разным формам файлов (CSV и TSV), показав гибкость утилиты column для различных типов данных.

Эти навыки ценны для обработки и анализа данных в среде Linux. Возможность быстро форматировать и визуализировать текстовые данные представляет собой мощный инструмент для системных администраторов, аналитиков данных и всех, кто работает с текстовыми файлами в командной строке.

Методы, которые вы изучили, можно применить для:

  • Анализа лог - файлов
  • Управления конфигурационными файлами
  • Извлечения и преобразования данных
  • Быстрой визуализации структурированных данных

Освоив команду column и научившись автоматизировать ее использование с помощью сценариев оболочки, вы добавили важный инструмент в свой набор инструментов для работы в командной строке Linux.