97

特定の行番号から400k行の長さのログファイルを分割したい。

この質問では、これを任意の数300kにします。

これを(スクリプト内で)実行できるLinuxコマンドはありますか?

splitサイズまたは行番号のいずれかでファイルを均等に分割できることはわかっていますが、それは私が望んでいることではありません。1つのファイルの最初の300kと、2番目のファイルの最後の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

また、最初の分割は2番目の分割よりも大きいため、考え直して、分割はあなたの場合に機能します。スプリットは入力のバランスを最後のスプリットに入れるので、

split -l 300000 file_name

40万行の入力に対して、30万行と10万行で出力xaaします。xab

于 2010-06-18T03:04:50.220 に答える