如何按行号进行文件分割

我想从一个特定的行号分割一个400k 行长的日志文件。

对于这个问题,让我们把这个任意的数字设为30万。

是否有一个 linux 命令允许我这样做(在剧本里) ?

我知道 split允许我按大小或行号将文件分成相等的部分,但这不是我想要的。我想在一个文件中的第一个30万和在第二个文件中的最后10万。

如果你能帮忙,我会很感激的,谢谢!

转念一想,这更适合超级用户或服务器错误站点。

131977 次浏览
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.