Saya menulis skrip untuk menyesuaikan file konfigurasi. Saya ingin mengganti beberapa contoh string dalam file ini, dan saya mencoba menggunakan PowerShell untuk melakukan pekerjaan itu.
Ini berfungsi dengan baik untuk satu penggantian, tetapi melakukan banyak penggantian sangat lambat karena setiap kali harus mengurai seluruh file lagi, dan file ini sangat besar. Skripnya terlihat seperti ini:
$original_file = 'path\filename.abc'
$destination_file = 'path\filename.abc.new'
(Get-Content $original_file) | Foreach-Object {
$_ -replace 'something1', 'something1new'
} | Set-Content $destination_file
Saya menginginkan sesuatu seperti ini, tetapi saya tidak tahu cara menulisnya:
$original_file = 'path\filename.abc'
$destination_file = 'path\filename.abc.new'
(Get-Content $original_file) | Foreach-Object {
$_ -replace 'something1', 'something1aa'
$_ -replace 'something2', 'something2bb'
$_ -replace 'something3', 'something3cc'
$_ -replace 'something4', 'something4dd'
$_ -replace 'something5', 'something5dsf'
$_ -replace 'something6', 'something6dfsfds'
} | Set-Content $destination_file
powershell
replace
Ivo Bosticky
sumber
sumber
$c = Get-Content $original_file; $c | ... | Set-Content $original_file
.Agar posting oleh George Howarth berfungsi dengan baik dengan lebih dari satu pengganti, Anda perlu menghapus jeda, tetapkan output ke variabel ($ line) dan kemudian keluarkan variabel:
sumber
Dengan PowerShell versi 3, Anda dapat menyatukan panggilan ganti:
sumber
Dengan asumsi Anda hanya dapat memiliki satu
'something1'
atau'something2'
, dll. Per baris, Anda dapat menggunakan tabel pencarian:Jika Anda dapat memiliki lebih dari satu, hapus saja
break
diif
pernyataan.sumber
Opsi ketiga, untuk satu-liner pipelined adalah menumpuk -replaces:
Dan:
Ini mempertahankan urutan eksekusi, mudah dibaca, dan cocok dengan pipa. Saya lebih suka menggunakan tanda kurung untuk kontrol eksplisit, dokumentasi diri, dll. Ini berfungsi tanpa tanda kurung, tetapi seberapa jauh Anda mempercayainya?
-Replace adalah Operator Perbandingan, yang menerima objek dan mengembalikan objek yang mungkin dimodifikasi. Inilah mengapa Anda dapat menumpuk atau menumpuknya seperti yang ditunjukkan di atas.
Silahkan lihat:
sumber