97

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

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

是否有允许我执行此操作的 linux 命令(在脚本中)?

我知道split让我按大小或行号将文件分成相等的部分,但这不是我想要的。我想要一个文件中的前 300k 和第二个文件中的最后 100k。

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

再三考虑,这将更适合超级用户或服务器故障站点。

4

1 回答 1

182
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

将输出xaa300k 行和xab100k 行,输入 400k 行。

于 2010-06-18T03:04:50.220 回答