11. Объединение и разделение

В Linux управление и манипулирование текстовыми файлами — распространенная задача. Двумя мощными утилитами для этого являются join и split. Команда join объединяет строки из двух файлов на основе общего поля, в то время как split разбивает большой файл на более мелкие, управляемые части.

Объединение файлов по общему полю

Команда join — это фундаментальный инструмент, когда вам нужно linux join files (объединить файлы Linux). По умолчанию она объединяет строки из двух отсортированных файлов на основе идентичного первого поля.

Например, представьте, что у вас есть два файла, которые вы хотите объединить:

file1.txt
1 John
2 Jane
3 Mary

file2.txt
1 Doe
2 Doe
3 Sue

Используя команду join, вы можете легко объединить их:

$ join file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue

Как видите, файлы были объединены с использованием общего первого поля (1, 2, 3). Чтобы join работал правильно, поля объединения в обоих файлах должны быть отсортированы.

Указание различных полей объединения

Что, если общее поле не является первой колонкой? Вы можете указать join, какие поля использовать. Рассмотрим эти файлы:

file1.txt
John 1
Jane 2
Mary 3

file2.txt
1 Doe
2 Doe
3 Sue

Здесь нам нужно объединить по второму полю file1.txt и первому полю file2.txt. Команда будет выглядеть так:

$ join -1 2 -2 1 file1.txt file2.txt
1 John Doe
2 Jane Doe
3 Mary Sue

Флаг -1 2 указывает поле 2 первого файла, а -2 1 — поле 1 второго файла.

Разбиение больших файлов

Команда split делает противоположное объединению — она делит большой файл на более мелкие.

split somefile

По умолчанию эта команда разбивает somefile на новые файлы после достижения лимита в 1000 строк. Выходные файлы именуются xaa, xab и так далее. Вы можете настроить это поведение, например, указав другое количество строк с помощью флага -l или разбив по размеру файла с помощью флага -b.

Войдите, чтобы сохранить ваш прогресс обучения

Вход

Упражнения

Практика ведет к совершенству! Вот несколько практических лабораторных работ для закрепления вашего понимания объединения и манипулирования текстовыми файлами:

  1. Команда Linux join: Объединение файлов — Эта лаборатория предоставляет прямое практическое введение в команду join, позволяя вам попрактиковаться в слиянии строк из двух отсортированных текстовых файлов на основе общего поля, как обсуждалось в уроке.
  2. Обработка данных о сотрудниках — Примените свои знания join и других мощных утилит командной строки Linux, таких как awk, для объединения и обработки данных из нескольких источников, имитируя сценарий анализа данных из реального мира.
  3. Управление последовательностью и конвейер — Повысьте эффективность командной строки и навыки манипулирования данными, научившись контролировать последовательности выполнения команд, использовать конвейеры и применять мощные инструменты для обработки текста, что дополняет возможности объединения данных команды join.

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

Тест

Какую команду вы бы использовали для объединения файлов с именами `cat`, `dog`, `cow`? Пожалуйста, предоставьте полную команду на английском языке. Команда и имена файлов должны быть в нижнем регистре.