paste
Что делает команда paste в Linux
Команда paste в Linux используется для объединения строк из одного или нескольких файлов построчно. Она берет строки из разных файлов и соединяет их с разделителем (по умолчанию — табуляция), формируя единый вывод. Это удобный инструмент для обработки табличных данных, логов и CSV-файлов прямо из командной строки.
Синтаксис команды paste в Linux:
paste [опции] [файл1] [файл2] ...
Если не указаны файлы, команда читает данные из стандартного ввода.
Пример:
paste file1.txt file2.txt
Этот пример объединит строки из file1.txt и file2.txt, разделяя их табуляцией.
Основные параметры команды paste в Linux
1. Опция -d (указание разделителя)
По умолчанию команда paste в Linux использует символ табуляции (\t) как разделитель. Чтобы задать другой символ, применяют параметр -d.
Пример:
paste -d "," file1.txt file2.txt
Здесь строки из файлов будут объединены через запятую.
Можно указать несколько разделителей, которые будут использоваться поочередно:
paste -d ",;:" file1.txt file2.txt file3.txt
В этом случае между первой парой файлов будет запятая, между следующими — точка с запятой, а затем двоеточие.
2. Опция -s (последовательное объединение строк)
Если вы хотите объединить строки не построчно, а последовательно (т.е. объединить все строки одного файла в одну строку), применяйте -s.
Пример:
paste -s file1.txt
Результат объединит все строки из file1.txt в одну строку с разделителем табуляции.
Можно также указать другой разделитель:
paste -s -d "," file1.txt
Теперь строки соединяются через запятую.
3. Использование paste с потоками ввода
Команда paste в Linux может работать не только с файлами, но и с данными из стандартного ввода. Символ - обозначает поток stdin.
Пример:
cat file1.txt | paste - file2.txt
Здесь данные из file1.txt читаются через cat, а file2.txt передается напрямую.
Это особенно удобно при создании конвейеров (pipelines) в Linux.
Пример с фильтрацией:
grep "error" log.txt | paste - file2.txt
Так можно объединить найденные строки из журнала с другим файлом.
4. Комбинирование с другими командами Linux
Возможности команды paste в Linux становятся особенно мощными при сочетании с утилитами cut, sort, awk и cat.
Пример 1. Объединение двух столбцов:
cut -d"," -f1 users.csv | paste -d "," - emails.txt
Этот пример берет первый столбец из users.csv и добавляет к нему содержимое файла emails.txt, разделяя запятой.
Пример 2. Создание нумерованного списка:
paste <(seq 1 5) items.txt
В результате получится список, где каждая строка будет начинаться с номера.
Технические детали и работа с разделителями
Как работают специальные символы в параметре -d
Когда вы задаете разделитель, можно использовать управляющие последовательности:
\t— табуляция\n— новая строка\\— обратный слеш
Пример:
paste -d "\n" file1.txt file2.txt
Здесь каждая пара строк из файлов будет выведена на новой строке.
Особенности работы с пустыми строками
Команда paste в Linux учитывает пустые строки как обычные, не пропуская их. Это важно при обработке CSV или логов, где пропуски могут иметь значение.
Пример:
paste file1.txt file2.txt > merged.txt
Если в file2.txt меньше строк, то оставшиеся строки будут дополнены пустыми значениями.
Чтобы избежать этого, можно предварительно выровнять количество строк в обоих файлах:
awk 'NF' file2.txt > clean.txt
paste file1.txt clean.txt
Примеры практического применения paste
Создание таблиц из текстовых файлов
paste -d "\t" names.txt scores.txt grades.txt > report.tsv
Результат — табличный файл с тремя столбцами.
Быстрое объединение вывода команд
ls | paste - -
Объединяет список файлов по два в строку.
Сценарии автоматизации
Команда paste в Linux часто используется в bash-скриптах для:
- генерации CSV-отчетов из логов;
- создания списков соответствий (например, IP → hostname);
- подготовки данных для загрузки в базы.
Пример скрипта:
#!/bin/bash
paste -d "," ips.txt hosts.txt > mapping.csv
echo "Файл mapping.csv успешно создан"
Проверка результата и совместимость
Вы можете проверить результат работы команды paste в Linux с помощью column -t, чтобы визуально выровнять столбцы:
paste file1.txt file2.txt | column -t
Команда полностью совместима со всеми основными дистрибутивами Linux: Ubuntu, Debian, CentOS, Fedora и другими.
При работе с большими наборами данных используйте paste в сочетании с xargs или parallel для ускорения обработки. Это особенно полезно при создании отчётов или анализе логов на серверах.