Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to file split at a line number [closed]

I want to split a 400k line long log file from a particular line number.

For this question, lets make this an arbitrary number 300k.

Is there a linux command that allows me to do this (within the script)?

I know split lets me split the file in equal parts either by size or line numbers but that's not what I want. I want to the first 300k in one file and the last 100k in the second file.

Any help would be appreciated. Thanks!

On second thoughts this would be more suited to the superuser or serverfault site.

like image 654
denormalizer Avatar asked Jun 18 '10 02:06

denormalizer


1 Answers

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 

Also, on second thought, split will work in your case, since the first split is larger than the second. Split puts the balance of the input into the last split, so

split -l 300000 file_name

will output xaa with 300k lines and xab with 100k lines, for an input with 400k lines.

like image 200
academicRobot Avatar answered Sep 25 '22 19:09

academicRobot