Saya memiliki file besar dan perlu dibagi menjadi dua file. Misalkan pada file pertama 1000 baris harus dipilih dan dimasukkan ke file lain dan hapus baris-baris itu di file pertama.
Saya mencoba menggunakan split
tetapi membuat beberapa potongan.
text-processing
awk
split
csplit
Aravind
sumber
sumber
split --help
?Jawaban:
Cara termudah adalah menggunakan
head
dantail
:Itu akan menempatkan 1000 baris pertama dari
input-file
keoutput1
, dan semua baris dari 1001 sampai akhiroutput2
sumber
Saya pikir itu
split
adalah pendekatan terbaik Anda.Coba gunakan
-l xxxx
opsi, di mana xxxx adalah jumlah baris yang Anda inginkan di setiap file (defaultnya adalah 1000).Anda dapat menggunakan
-n yy
opsi ini jika Anda lebih mementingkan jumlah file yang dibuat. Penggunaan-n 2
akan membagi file Anda menjadi hanya 2 bagian, tidak peduli jumlah baris dalam setiap file.Anda dapat menghitung jumlah baris dalam file Anda dengan
wc -l filename
. Ini adalah perintah 'wordcount' dengan opsi baris.Referensi
man split
man wc
sumber
split -l 1000 bigfile && mv xaa piece1 && cat x?? > piece2 && rm x??
.Ini adalah pekerjaan untuk
csplit
:akan
s
dibagiinfile
, bagian pertamaxx00
- hingga tetapi tidak termasuk baris 1001 dan bagian keduaxx01
- baris yang tersisa.Anda dapat bermain dengan opsi jika Anda memerlukan nama file output yang berbeda misalnya menggunakan
-f
dan menentukan awalan :menghasilkan dua file bernama
piece.00
danpiece.01
Dengan cerdas
head
Anda juga bisa melakukan sesuatu seperti:sumber
csplit
. Sangat bagus. (Saya hanya membaca daftar perintah POSIX dan mengalami kesulitan besar membungkus kepala saya di sekitar tujuancsplit
perintah pada awalnya. Ternyata itu benar-benar sangat sederhana.) :)Cara sederhana untuk melakukan apa yang diminta pertanyaan, dalam satu perintah:
atau, bagi Anda yang benar-benar benci mengetik perintah yang panjang dan intuitif,
sumber