В 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.