paste

Что делает команда paste в Linux

Команда paste в Linux используется для объединения строк из одного или нескольких файлов построчно. Она берет строки из разных файлов и соединяет их с разделителем (по умолчанию — табуляция), формируя единый вывод. Это удобный инструмент для обработки табличных данных, логов и CSV-файлов прямо из командной строки.

Синтаксис команды paste в Linux:

Bash
paste [опции] [файл1] [файл2] ...

Если не указаны файлы, команда читает данные из стандартного ввода.

Пример:

Bash
paste file1.txt file2.txt

Этот пример объединит строки из file1.txt и file2.txt, разделяя их табуляцией.

Если вы хотите быстро объединить данные из нескольких текстовых файлов в один столбчатый вид — paste справится быстрее, чем использование awk или sed.

Основные параметры команды paste в Linux

1. Опция -d (указание разделителя)

По умолчанию команда paste в Linux использует символ табуляции (\t) как разделитель. Чтобы задать другой символ, применяют параметр -d.

Пример:

Bash
paste -d "," file1.txt file2.txt

Здесь строки из файлов будут объединены через запятую.

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

Bash
paste -d ",;:" file1.txt file2.txt file3.txt

В этом случае между первой парой файлов будет запятая, между следующими — точка с запятой, а затем двоеточие.

Используйте -d ‘\t’, чтобы явно задать табуляцию, особенно при работе со скриптами, где важно точное форматирование.

2. Опция -s (последовательное объединение строк)

Если вы хотите объединить строки не построчно, а последовательно (т.е. объединить все строки одного файла в одну строку), применяйте -s.

Пример:

Bash
paste -s file1.txt

Результат объединит все строки из file1.txt в одну строку с разделителем табуляции.

Можно также указать другой разделитель:

Bash
paste -s -d "," file1.txt

Теперь строки соединяются через запятую.

3. Использование paste с потоками ввода

Команда paste в Linux может работать не только с файлами, но и с данными из стандартного ввода. Символ - обозначает поток stdin.

Пример:

Bash
cat file1.txt | paste - file2.txt

Здесь данные из file1.txt читаются через cat, а file2.txt передается напрямую.

Это особенно удобно при создании конвейеров (pipelines) в Linux.

Пример с фильтрацией:

Bash
grep "error" log.txt | paste - file2.txt

Так можно объединить найденные строки из журнала с другим файлом.

4. Комбинирование с другими командами Linux

Возможности команды paste в Linux становятся особенно мощными при сочетании с утилитами cut, sort, awk и cat.

Пример 1. Объединение двух столбцов:

Bash
cut -d"," -f1 users.csv | paste -d "," - emails.txt

Этот пример берет первый столбец из users.csv и добавляет к нему содержимое файла emails.txt, разделяя запятой.

Пример 2. Создание нумерованного списка:

Bash
paste <(seq 1 5) items.txt

В результате получится список, где каждая строка будет начинаться с номера.

Технические детали и работа с разделителями

Как работают специальные символы в параметре -d

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

  • \t — табуляция
  • \n — новая строка
  • \\ — обратный слеш

Пример:

Bash
paste -d "\n" file1.txt file2.txt

Здесь каждая пара строк из файлов будет выведена на новой строке.

Используйте кавычки при работе со специальными символами, чтобы оболочка не интерпретировала их раньше времени.

Особенности работы с пустыми строками

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

Пример:

Bash
paste file1.txt file2.txt > merged.txt

Если в file2.txt меньше строк, то оставшиеся строки будут дополнены пустыми значениями.

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

Bash
awk 'NF' file2.txt > clean.txt
paste file1.txt clean.txt

Примеры практического применения paste

Создание таблиц из текстовых файлов

Bash
paste -d "\t" names.txt scores.txt grades.txt > report.tsv

Результат — табличный файл с тремя столбцами.

Быстрое объединение вывода команд

Bash
ls | paste - - 

Объединяет список файлов по два в строку.

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

Сценарии автоматизации

Команда paste в Linux часто используется в bash-скриптах для:

  • генерации CSV-отчетов из логов;
  • создания списков соответствий (например, IP → hostname);
  • подготовки данных для загрузки в базы.

Пример скрипта:

Bash
#!/bin/bash
paste -d "," ips.txt hosts.txt > mapping.csv
echo "Файл mapping.csv успешно создан"

Проверка результата и совместимость

Вы можете проверить результат работы команды paste в Linux с помощью column -t, чтобы визуально выровнять столбцы:

Bash
paste file1.txt file2.txt | column -t

Команда полностью совместима со всеми основными дистрибутивами Linux: Ubuntu, Debian, CentOS, Fedora и другими.

При работе с большими наборами данных используйте paste в сочетании с xargs или parallel для ускорения обработки. Это особенно полезно при создании отчётов или анализе логов на серверах.