特定の行番号から400k行の長いログファイルを分割したい。
この質問では、これを任意の数300kにします。
これを行うことができるLinuxコマンドはありますか(スクリプト内)?
split
を使用すると、ファイルをサイズまたは行番号で均等に分割できますが、それは私が望んでいることではありません。 1つのファイルの最初の300kと2番目のファイルの最後の100kにしたいです。
任意の助けをいただければ幸いです。ありがとう!
考え直してみると、これはスーパーユーザーまたはサーバー障害サイトにより適しているでしょう。
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
入力が400k行の場合、xaa
が300k行、xab
が100k行で出力されます。