如何在行号处分割文件

时间:2010-06-18 02:55:30

标签: linux shell split filesplitting

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

对于这个问题,让我们将它设为任意数字300k。

是否有允许我这样做的linux命令(在脚本中)?

我知道split允许我按大小或行号分割文件,但这不是我想要的。我希望一个文件中的第一个300k和第二个文件中的最后一个100k。

任何帮助将不胜感激。谢谢!

再想一想,这更适合超级用户或服务器故障站点。

1 个答案:

答案 0 :(得分:177)

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 -l 300000 file_name

将输出带有300k行的xaa和带有100k行的xab,输出带有400k行的输入。