Как записать расщепление по номеру строки

Я хочу разбить файл журнала длиной 400 тыс. строк из определенного номера строки.

Для этого вопроса давайте сделаем это произвольное число 300k.

Есть ли команда linux, которая позволяет мне это делать (в script)?

Я знаю, что split позволяет мне разделить файл в равных частях либо по размеру, либо по номерам строк, но это не то, что я хочу. Я хочу, чтобы первые 300k в одном файле и последние 100k во втором файле.

Любая помощь будет оценена по достоинству. Спасибо!

Во-вторых, это больше подходит для сайта суперпользователя или сервера.

Ответ 1

file_name=test.log

# set first K lines:
K=1000

# line count (N): 
N=$(wc -l < $file_name)

# length of the bottom file:
L=$(( $N - $K ))

# create the top of file: 
head -n $K $file_name > top_$file_name

# create bottom of file: 
tail -n $L $file_name > bottom_$file_name

Кроме того, с другой стороны, раскол будет работать в вашем случае, так как первый раскол больше второго. Split ставит баланс ввода в последний сплит, поэтому

split -l 300000 file_name

выводит xaa с линиями 300k и xab со 100k строками для ввода с 400k строк.