Saya ingin membagi file log sepanjang 400k dari nomor baris tertentu.
Untuk pertanyaan ini, mari jadikan ini angka acak 300k.
Apakah ada perintah linux yang memungkinkan saya melakukan ini ( di dalam skrip )?
aku tahu split
memungkinkan saya membagi file menjadi bagian yang sama baik berdasarkan ukuran atau nomor baris tetapi bukan itu yang saya inginkan. Saya ingin 300k pertama dalam satu file dan 100k terakhir di file kedua.
Bantuan apa pun akan dihargai. Terima kasih!
Jika dipikir-pikir, ini akan lebih cocok untuk situs superuser atau serverfault.
linux
shell
split
filesplitting
denormalizer
sumber
sumber
Jawaban:
Juga, setelah dipikir-pikir, pemisahan akan berfungsi dalam kasus Anda, karena pemisahan pertama lebih besar dari yang kedua. Split menempatkan keseimbangan input ke split terakhir, jadi
split -l 300000 file_name
akan menghasilkan
xaa
dengan 300k baris danxab
dengan 100k baris, untuk masukan dengan 400k baris.sumber
tail -n +L file_name > bottom_file
mana hanyaL=K+1
dengan tidak perlu menjalankanwc
terlebih dahulused -n '1,1000p' test.log > top_test.log ; sed '1,1000d' test.log > bottom_test.log
. IHMO, ini lebih mudah, dan tidak perlu menghitung jumlah baris. Juga, ini masih berfungsi jika baris ditambahkan di antara eksekusi setiap perintah.