Разделить текстовый файл на несколько файлов с помощью Bash

Я могу предоставить вам несколько методов разделения текстового файла на несколько файлов с помощью сценариев Bash. Вот несколько примеров:

Метод 1: использование команды разделения

split -l 1000 input.txt output_

Эта команда разбивает файл «input.txt» на несколько файлов, каждый из которых содержит не более 1000 строк. Выходные файлы будут называться «output_aa», «output_ab», «output_ac» и т. д.

Способ 2: использование команды csplit

csplit input.txt '/^$/' '{*}' -s -f output_

Эта команда разбивает файл «input.txt» на несколько файлов на основе пустых строк. Каждый выходной файл будет называться «output_00», «output_01», «output_02» и т. д.

Метод 3. Использование собственного сценария Bash

#!/bin/bash

count=1
lines=1000
split_file_prefix="output_"

while IFS='' read -r line
do
    echo "$line" >> "$split_file_prefix$count.txt"
    ((count++))
    if [ $((count % lines)) -eq 0 ]
    then
        count=1
    fi
done < input.txt

Этот скрипт читает файл «input.txt» построчно и записывает каждую строку в отдельные выходные файлы. Он разбивает файл через каждые 1000 строк и присваивает выходным файлам имена «output_1.txt», «output_2.txt» и т. д.