Объединение строк в Linux

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

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

Введение

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

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

Это Guided Lab, который предоставляет пошаговые инструкции, чтобы помочь вам учиться и практиковаться. Внимательно следуйте инструкциям, чтобы выполнить каждый шаг и получить практический опыт. Исторические данные показывают, что это лабораторная работа уровня начальный с процентом завершения 98%. Он получил 100% положительных отзывов от учащихся.

Базовое использование команды paste

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

Начнем с перехода в директорию проекта, где мы будем выполнять все наши операции:

cd ~/project

Теперь нам нужно создать несколько примеров файлов, чтобы продемонстрировать команду paste. Сначала создадим файл, содержащий данные о температуре:

echo "Temperature" > temperatures.txt

Эта команда использует echo для записи слова "Temperature" в файл с именем temperatures.txt. Символ > перенаправляет вывод команды echo в файл, создавая файл, если он не существует, или перезаписывая его, если он уже есть.

Далее создадим другой файл с различными атмосферными условиями:

echo -e "Pressure\nHumidity\nWind_Speed" > conditions.txt

В этой команде мы используем опцию -e с echo для интерпретации экранированных символов. Символ \n представляет символ новой строки, поэтому эта команда создает файл с тремя строками: "Pressure", "Humidity" и "Wind_Speed".

Проверим содержимое обоих файлов, чтобы убедиться, что они были созданы правильно:

cat temperatures.txt

Должно отобразиться следующее:

Temperature

Теперь проверим файл с условиями:

cat conditions.txt

Должно отобразиться следующее:

Pressure
Humidity
Wind_Speed

Теперь, когда наши файлы готовы, используем команду paste для объединения их бок о бок:

paste temperatures.txt conditions.txt

Вывод должен выглядеть следующим образом:

Temperature      Pressure
                Humidity
                Wind_Speed

Обратите внимание, что команда paste объединила файлы построчно, разместив содержимое файла temperatures.txt перед содержимым файла conditions.txt на каждой строке. Символ табуляции используется в качестве разделителя между столбцами по умолчанию.

Поскольку файл temperatures.txt содержит только одну строку, остальные строки из файла conditions.txt отображаются с пустым пространством вместо содержимого файла temperatures.txt.

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

Использование пользовательских разделителей с командой paste

По умолчанию команда paste использует символ табуляции в качестве разделителя между объединенными столбцами. Однако вы можете указать другой разделитель, используя опцию -d, что полезно для создания CSV-файлов, данных с пользовательским форматом или подготовки данных для других инструментов.

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

echo -e "Date\n2023-04-01\n2023-04-02\n2023-04-03" > dates.txt

Эта команда создает файл с четырьмя строками: заголовком "Date" и тремя датами.

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

cat dates.txt

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

Date
2023-04-01
2023-04-02
2023-04-03

Теперь объединим все три файла, используя запятую в качестве разделителя вместо стандартного табулятора:

paste -d ',' temperatures.txt conditions.txt dates.txt

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

Вывод должен выглядеть следующим образом:

Temperature,Pressure,Date
,Humidity,2023-04-01
,Wind_Speed,2023-04-02
,,2023-04-03

Обратите внимание, что в первой колонке для строк 2 - 4 есть пустые значения, потому что файл temperatures.txt содержит только одну строку. Аналогично, во второй колонке для строки 4 есть пустое значение, потому что файл conditions.txt содержит только три строки.

Вы можете использовать любой символ в качестве разделителя. Например, попробуем использовать двоеточие:

paste -d ':' temperatures.txt conditions.txt dates.txt

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

Temperature:Pressure:Date
:Humidity:2023-04-01
:Wind_Speed:2023-04-02
::2023-04-03

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

Последовательное объединение с помощью команды paste

До сих пор мы использовали команду paste для горизонтального объединения файлов, размещая содержимое разных файлов бок о бок. Однако команда paste также может объединять файлы последовательно (один за другим) с использованием опции -s. Это полезно, когда вы хотите преобразовать несколько строк файла в одну строку или когда вы хотите обработать каждый файл отдельно.

Демонстрируем последовательное объединение с использованием уже созданных нами файлов:

paste -s temperatures.txt

Опция -s сообщает команде paste последовательно объединить строки в каждом файле перед переходом к следующему файлу. Поскольку файл temperatures.txt содержит только одну строку, вывод может не отличаться:

Temperature

Попробуем с файлом conditions.txt, который содержит несколько строк:

paste -s conditions.txt

Вывод должен выглядеть следующим образом:

Pressure        Humidity        Wind_Speed

Обратите внимание, что все строки из файла conditions.txt были объединены в одну строку, при этом значения разделены табуляцией. Это отличается от поведения по умолчанию команды paste, которая объединяет строки из разных файлов.

Вы также можете использовать опцию -d вместе с -s, чтобы указать пользовательский разделитель для последовательного объединения:

paste -s -d ',' conditions.txt

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

Pressure,Humidity,Wind_Speed

Если вы передаете несколько файлов команде paste -s, она обрабатывает каждый файл отдельно, создавая отдельную строку вывода для каждого файла:

paste -s temperatures.txt conditions.txt dates.txt

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

Temperature
Pressure        Humidity        Wind_Speed
Date    2023-04-01      2023-04-02      2023-04-03

Как вы можете видеть, первая строка - это объединенное содержимое файла temperatures.txt (которое представляет собой всего одну строку), вторая строка - объединенное содержимое файла conditions.txt, а третья строка - объединенное содержимое файла dates.txt.

Вы также можете комбинировать опции -s и -d, чтобы указать разные разделители для каждого файла. Например:

paste -s -d ',:\n' temperatures.txt conditions.txt dates.txt

Опция -d ',:\n' указывает три разделителя: запятую для первого файла, двоеточие для второго файла и символ новой строки для третьего файла (который просто переходит на следующую строку). Вывод должен быть следующим:

Temperature
Pressure:Humidity:Wind_Speed
Date    2023-04-01      2023-04-02      2023-04-03

Последовательное объединение с помощью команды paste - это мощная функция, которая может преобразовать структуру данных, делая ее подходящей для различных требований обработки.

Резюме

В этом практическом занятии вы узнали, как использовать команду paste в Linux для объединения строк из нескольких файлов различными способами:

  1. Базовое использование команды paste для горизонтального объединения файлов с использованием стандартного разделителя - табуляции.
  2. Использование опции -d для указания пользовательских разделителей при объединении файлов.
  3. Использование опции -s для последовательного объединения строк в пределах файла.

Эти навыки являются фундаментальными для обработки данных и манипуляции текстом в Linux-окружениях. Команда paste особенно полезна для:

  • Создания табличных данных из отдельных файлов, представляющих столбцы.
  • Форматирования данных для импорта в базы данных или электронные таблицы.
  • Преобразования данных из вертикального в горизонтальный формат и наоборот.
  • Подготовки данных к дальнейшей обработке с использованием других команд Linux.

Освоив команду paste, вы добавили мощный инструмент в свой набор Linux-команд, который поможет вам эффективно манипулировать и обрабатывать текстовые данные.