質問

特定の行番号から400K行の長いログファイルを分割したいと思います。

この質問では、これを任意の300Kにしましょう。

私がこれを行うことを可能にするLinuxコマンドはありますか(スクリプト内)?

知っている split サイズまたはライン番号でファイルを等しい部分に分割してもらえますが、それは私が望むものではありません。最初の300Kを1つのファイルで、2番目のファイルで最後の100Kにしたいです。

どんな助けも感謝します。ありがとう!

再考すると、これはスーパーユーザーまたはServerFaultサイトにより適しています。

役に立ちましたか?

解決

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はあなたのケースで機能します。スプリットは、入力のバランスを最後のスプリットに入れますので、

split -l 300000 file_name

出力されます xaa 300Kラインと xab 400kラインの入力用に100k行。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top