Saya perlu menggabungkan beberapa file teks yang relatif besar, dan lebih suka melakukan ini melalui baris perintah. Sayangnya saya hanya memiliki Windows, dan tidak dapat menginstal perangkat lunak baru.
type file1.txt file2.txt > out.txt
memungkinkan saya hampir mendapatkan apa yang saya inginkan, tetapi saya tidak ingin baris pertama file2.txt dimasukkan dalam out.txt.
Saya perhatikan bahwa more
memiliki +n
opsi untuk menentukan garis awal, tetapi saya belum berhasil menggabungkannya untuk mendapatkan hasil yang saya inginkan. Saya sadar bahwa ini tidak mungkin di Windows, dan saya selalu dapat mengedit out.txt dengan tangan untuk menghilangkan baris, tetapi apakah ada cara sederhana untuk melakukannya dari baris perintah?
copy
perintah jauh lebih cepat, tetapi menempatkan karakter SUB di akhir. Apakah ada cara untuk menghindari ini?copy /b *.txt combined.txt
tanpa harus membuat daftar file secara individual.type file1.txt temp > out.txt
benar-benar menambahkan file kedua, tanpa header ke yang pertamaSaya menggunakan ini, dan itu berfungsi dengan baik untuk saya:
TYPE \\Server\Share\Folder\*.csv >> C:\Folder\ConcatenatedFile.csv
Tentu saja, sebelum menjalankan, Anda harus melakukannya
DELETE C:\Folder\ConcatenatedFile.csv
Satu-satunya masalah adalah jika semua file memiliki header, maka itu akan diulang di semua file.
sumber
Saya tidak memiliki poin reputasi yang cukup untuk mengomentari rekomendasi yang akan digunakan
*.csv >> ConcatenatedFile.csv
, tetapi saya dapat menambahkan peringatan:Jika Anda membuat
ConcatenatedFile.csv
file di direktori yang sama dengan yang Anda gunakan untuk penggabungan, itu akan ditambahkan ke dirinya sendiri.sumber
Gunakan perintah FOR untuk menggemakan file baris demi baris, dan dengan opsi 'lewati' untuk melewatkan sejumlah baris awal ...
Anda bisa mengarahkan output file batch, berisi sesuatu seperti ...
Catat% ganda ketika variabel UNTUK digunakan dalam file batch.
sumber
Berikut cara melakukannya:
sumber
Saya akan menempatkan ini dalam komentar ke ghostdog74, kecuali perwakilan saya terlalu rendah, jadi begini.
more +2 file2.txt > temp
Kode ini sebenarnya akan mengabaikan baris 1 dan 2 file. OP ingin menyimpan semua baris dari file pertama (untuk mempertahankan baris tajuk), lalu mengecualikan baris pertama (mungkin baris tajuk yang sama) pada file kedua, jadi untuk mengecualikan hanya baris tajuk yang harus digunakan OP
more +1
.type temp file1.txt > out.txt
Tidak jelas hasil pesanan apa dari kode ini. Apakah
temp
ditambahkan kefile1.txt
(seperti yang diinginkan), ataufile1.txt
ditambahkan ketemp
(tidak diinginkan karena baris header akan dimakamkan di tengah file yang dihasilkan).Selain itu, operasi ini membutuhkan waktu yang SANGAT PANJANG dengan file besar (mis. 300MB)
sumber
Saya tahu Anda mengatakan bahwa Anda tidak dapat menginstal perangkat lunak apa pun, tetapi saya tidak yakin seberapa ketat pembatasan itu. Lagi pula, saya memiliki masalah yang sama (mencoba menyatukan dua file dengan header yang mungkin sama) dan saya pikir saya akan memberikan jawaban alternatif untuk orang lain yang tiba di halaman ini, karena itu bekerja hanya bagus untuk saya.
Setelah mencoba sejumlah besar perintah di windows dan menjadi sangat frustrasi, dan juga mencoba semua jenis editor grafis yang berjanji untuk dapat membuka file besar, tetapi kemudian tidak bisa, saya akhirnya kembali ke root Linux saya dan membuka Cygwin saya cepat. Dua perintah:
Untuk
file1.csv
800MB danfile2.csv
400MB, kedua perintah itu membutuhkan waktu kurang dari 5 detik di mesin saya. Dalam prompt Cygwin, tidak kurang. Saya pikir perintah-perintah Linux seharusnya lambat di Cygwin tetapi pendekatan itu membutuhkan lebih sedikit usaha dan jauh lebih mudah daripada pendekatan windows yang bisa saya temukan.sumber
Dalam PowerShell:
sumber
Anda juga bisa mencoba ini
Ini akan menambahkan konten file2.txt di akhir file1.txt
Jika Anda memerlukan file1.txt asli, buat cadangan terlebih dahulu. Atau Anda bisa melakukan ini
Jika Anda ingin memiliki jeda baris di akhir file pertama, Anda dapat mencoba perintah berikut sebelum menambahkan.
sumber
Bantuan untuk
copy
menjelaskan bahwa wildcard dapat digunakan untuk menggabungkan beberapa file menjadi satu.Misalnya, untuk menyalin semua file .txt di folder saat ini yang dimulai dengan "abc" ke dalam satu file bernama xyz.txt:
sumber
sumber
Ini mengambil
Test.txt
dengan header dan menambahkanTest1.txt
danTest2.txt
dan menulis hasil keTestresult.txt
file setelah menghapus header dari file kedua dan ketiga masing-masing:sumber