Команда paste в Linux

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

В этом руководстве мы объясним, как использовать команду paste .

Как использовать команду paste

paste — одна из малоизвестных и используемых утилит командной строки Linux и Unix.

Общий синтаксис команды paste следующий:

paste [OPTION].. [FILE]...

Если нет входных файлов не предоставляется или когда - задаются в качестве аргумента, paste использует стандартный ввод.

Допустим, у нас есть следующие файлы:

file1
Iron Man
Thor
Captain America
Hulk
Spider Man
file2
Black Widow
Captain Marvel
Dark Phoenix
Nebula

При вызове без опции paste прочитает все файлы, указанные в качестве аргументов, и объединит соответствующие строки файлов, разделенные пробелом, по горизонтали:

paste file1 file2
Iron Man	Black Widow
Thor	Captain Marvel
Captain America	Dark Phoenix
Hulk	Nebula
Spider Man

Вместо отображения вывода на экран вы можете перенаправить его в файл с помощью операторов > , >> :

paste file1 file2 > file3

Если файл не существует, он будет создан. Оператор > перезапишет существующий файл, а оператор >> добавит вывод в файл.

Параметр -d , -delimiters позволяет указать список символов, которые будут использоваться в качестве разделителей вместо разделителя TAB по умолчанию.

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

Чтобы использовать символ _ (подчеркивание) в качестве разделителя вместо TAB , введите:

paste -d '_' file1 file2
Iron Man_Black Widow
Thor_Captain Marvel
Captain America_Dark Phoenix
Hulk_Nebula
Spider Man_

Вот пример использования двух разделителей:

paste -d '%|' file1 file2 file1

Строки из первого и второго файла разделяются первым символом из списка разделителей. Вторая и третья строки файла разделяются вторым разделителем.

Если было указано больше файлов, paste начинается снова с начала списка.

Iron Man%Black Widow|Iron Man
Thor%Captain Marvel|Thor
Captain America%Dark Phoenix|Captain America
Hulk%Nebula|Hulk
Spider Man%|Spider Man  

Параметр -s , --serial указывает paste отображать строки одного файла за раз вместо одной строки из каждого файла.

paste -s file1 file2

Команда объединит все строки из данного файла в отдельные строки:

Iron Man	Thor	Captain America	Hulk	Spider Man
Black Widow	Captain Marvel	Dark Phoenix	Nebula

При использовании с параметром -z , --zero-terminated , paste использует нулевой символ для разделения элементов вместо символа новой строки по умолчанию. Такое поведение удобно, когда paste используется в сочетании с find -print0 и xargs -0 для обработки имен файлов, содержащих специальные символы.

Выводы

Команда paste используется для объединения соответствующих строк данных файлов.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий