Χρησιμοποιώντας το PowerShell, θέλω να αντικαταστήσω όλες τις ακριβείς εμφανίσεις του [MYID]
σε ένα δεδομένο αρχείο με το MyValue
. Ποιος είναι ο ευκολότερος τρόπος για να το κάνω;
Χρήση (έκδοση V3):
(Get-Content c:\temp\test.txt).replace('[MYID]', 'MyValue') | Set-Content c:\temp\test.txt
Ή για V2:
(Get-Content c:\temp\test.txt) -replace '\[MYID\]', 'MyValue' | Set-Content c:\temp\test.txt
(Get-Content file.txt) |
Foreach-Object {$_ -replace '\[MYID\]','MyValue'} |
Out-File file.txt
Σημειώστε ότι η παρένθεση γύρω από το (Get-Content file.txt)
είναι απαραίτητη:
Χωρίς την παρένθεση το περιεχόμενο διαβάζεται, μία γραμμή κάθε φορά, και ρέει κατά μήκος του αγωγού μέχρι να φτάσει στο out-file ή στο set-content, το οποίο προσπαθεί να γράψει στο ίδιο αρχείο, αλλά αυτό'είναι ήδη ανοιχτό από το get-content και λαμβάνετε ένα σφάλμα. Η παρένθεση προκαλεί την εκτέλεση της λειτουργίας της ανάγνωσης περιεχομένου μία φορά (άνοιγμα, ανάγνωση και κλείσιμο). Μόνο στη συνέχεια, όταν όλες οι γραμμές έχουν διαβαστεί, διοχετεύονται μία-μία και όταν φτάσουν στην τελευταία εντολή της διοχέτευσης μπορούν να εγγραφούν στο αρχείο. Είναι το ίδιο με το $content=content; $content | όπου ...