Saya mencoba mereplikasi fungsionalitas cat
perintah di Unix.
Saya ingin menghindari solusi di mana saya secara eksplisit membaca kedua file menjadi variabel, menggabungkan variabel bersama-sama, dan kemudian menulis variabel gabungan.
sumber
Saya mencoba mereplikasi fungsionalitas cat
perintah di Unix.
Saya ingin menghindari solusi di mana saya secara eksplisit membaca kedua file menjadi variabel, menggabungkan variabel bersama-sama, dan kemudian menulis variabel gabungan.
Anda cukup menggunakan cat example1.txt, example2.txt | sc examples.txt
. Anda pasti dapat menggabungkan lebih dari dua file dengan gaya ini juga. Selain itu, jika file diberi nama serupa, Anda dapat menggunakan:
cat example*.txt | sc allexamples.txt
Itu cat
adalah alias untuk Get-Content
, dan sc
merupakan alias untuk Set-Content
.
Catatan 1 : Hati-hati dengan metode yang terakhir - jika Anda mencoba menampilkan ke examples.txt
(atau serupa yang cocok dengan pola), PowerShell akan masuk ke loop tak terbatas! (Saya baru saja menguji ini).
Catatan 2 : Menghasilkan file dengan >
tidak mempertahankan pengkodean karakter! Inilah mengapa menggunakan Set-Content
( sc
) direkomendasikan.
Set-Content
menggunakan halaman kode nasional (misalnya Windows-1252 untuk bahasa Inggris). Jika file sumber berisi pengkodean lain (misalnya Windows-1251 atau UTF8), Anda harus mengatur pengkodean yang benarsc file.txt -Encoding UTF8
(nomor seperti 1251 untuk bahasa Rusia didukung sejak v6.2)Add-Content
adalah jika Anda menjalankan perintah dua kali, file agregat dua kali lebih lama. Pengganti yang bagus adalahOut-File
. Contoh di siniGet-Content my.bin -Raw | Set-Content my.bin -NoNewline
tidak akan berubahmy.bin
kecuali cap waktu.-Raw
mempertahankan byte CR / LF, sementara-NoNewline
mencegah PowerShell menambahkan byte CR / LF-nya sendiri.Jangan gunakan
>
; itu mengacaukan pengkodean karakter. Menggunakan:sumber
cat
adalah alias untukGet-Content
.ÿþ
yangFF FE
di awal file gabungan saya saat menggunakan>
.Di
cmd
, Anda dapat melakukan ini:Di PowerShell ini akan menjadi:
Sementara cara PowerShell akan menggunakan gc , cara di atas akan cukup cepat, terutama untuk file besar. Dan itu dapat digunakan pada file non- ASCII juga menggunakan
/B
sakelar.sumber
Anda dapat menggunakan cmdlet Add-Content . Mungkin ini sedikit lebih cepat daripada solusi lainnya, karena saya tidak mengambil konten file pertama.
sumber
gc
merujuk?gc
adalah alias untuk Get-ContentUntuk menggabungkan file dalam command prompt itu akan menjadi
PowerShell mengonversi
type
perintah menjadiGet-Content
, yang berarti Anda akan mendapatkan kesalahan saat menggunakantype
perintah di PowerShell karenaGet-Content
perintah tersebut memerlukan koma yang memisahkan file. Perintah yang sama di PowerShell adalahsumber
Jika Anda perlu memesan file dengan parameter tertentu (misalnya tanggal waktu):
sumber
Saya menggunakan:
Ini ditambahkan dengan baik. Saya menambahkan pengkodean ASCII untuk menghapus karakter nol yang ditampilkan Notepad ++ tanpa pengkodean eksplisit.
sumber
Anda dapat melakukan sesuatu seperti:
Di mana
>
adalah alias untuk "out-file", dan >> adalah alias untuk "out-file -append".sumber
Karena sebagian besar balasan lain sering salah formatnya (karena perpipaan), hal teraman untuk dilakukan adalah sebagai berikut:
Saya tahu Anda ingin menghindari membaca konten $ SomeAdditionalFile ke dalam variabel, tetapi untuk menyimpan misalnya format baris baru Anda, saya rasa tidak ada cara yang tepat untuk melakukannya tanpa.
Solusinya adalah dengan mengulang baris $ SomeAdditionalFile Anda demi baris dan menyalurkannya ke $ YourMasterFile Anda. Namun ini terlalu intensif sumber daya.
sumber
Untuk menjaga encoding dan akhir baris:
Catatan: AFAIR, yang parameternya tidak didukung oleh Powershells lama (<3? <4?)
sumber
Saya pikir "cara PowerShell" bisa jadi:
sumber