Объединение нескольких текстовых файлов в Linux Bash с каждой строкой под строкой другого файла

Вопрос или проблема

Объедините несколько файлов, при этом каждая строка будет под строкой другого файла.

Пример:
fileA

1
4
7

fileB

2
5
8

fileC

3
6
9

результат:

file_output

1
2
3
4
5
6
7
8
9

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

paste -d $'\n' fileA fileB fileC > file_output

записывает ожидаемый вывод в указанный выходной файл.

Вы также можете использовать

paste -d '\n' fileA fileB fileC > file_output

Разница заключается в том, что $'\n' заменяется на перенос строки оболочкой, в то время как '\n' (без $) интерпретируется командой paste.


Для вашего сведения: Обычный вывод команды

paste fileA fileB fileC

с TAB в качестве разделителя по умолчанию будет выглядеть так:

1       2       3
4       5       6
7       8       9

Ответ или решение

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

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

Допустим, у вас есть три текстовых файла: fileA, fileB и fileC.

Содержимое файлов:

fileA:

1
4
7

fileB:

2
5
8

fileC:

3
6
9

Чтобы объединить эти файлы и получить желаемый результат в файле file_output, вы можете использовать следующую команду:

paste -d $'\n' fileA fileB fileC > file_output

Или, в альтернативной записи:

paste -d '\n' fileA fileB fileC > file_output

Объяснение

  • paste: это команда, которая склеивает строки из нескольких файлов.
  • -d $'\n': устанавливает символ новой строки как разделитель, что позволяет каждой строке из входных файлов помещаться в отдельную строку выходного файла.
  • fileA fileB fileC: перечислены файлы, которые нужно объединить.
  • > file_output: перенаправляет результат выполнения команды в новый файл file_output.

Результат

После выполнения команды в файл file_output будет записан следующий результат:

1
2
3
4
5
6
7
8
9

Дополнительная информация

Если вы выполните команду paste fileA fileB fileC без указания разделителя, то вывод будет выглядеть следующим образом, используя по умолчанию символ табуляции:

1       2       3
4       5       6
7       8       9

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

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

Оцените материал
Добавить комментарий

Капча загружается...