0
我試圖從PS腳本加載文件,需要根據給定模式和新值進行搜索替換。我需要知道模式是什麼。下面是該文件的節選:使用PowerShell進行搜索替換所需的RegEx
USER_IDEN;SYSTEM1;USERNAME1;
30;WINDOWS;Wanner.Siegfried;
63;WINDOWS;Ott.Rudolf;
68;WINDOWS;Waldera.Alicja;
94;WINDOWS;Lanzl.Dieter;
98;WINDOWS;Hofmeier.Erhard;
ReplacerValue: 「@ dummy.domain.com」 要更換什麼:USERNAME1列
預期結果:
USER_IDEN;SYSTEM1;USERNAME1;
30;WINDOWS;[email protected];
63;WINDOWS;[email protected];
68;WINDOWS;[email protected];
94;WINDOWS;[email protected];
98;WINDOWS;[email protected];
此外,文件也可以是這樣的:
USER_IDEN;SYSTEM1;USERNAME1;SYSTEM2;USERNAME2;SYSTEM3;USERNAME3;
30;WINDOWS;Wanner.Siegfried;WINDOWS2;Wanner.Siegfried;LINUX;Dev-1;LINUX2;QA1
63;WINDOWS;Ott.Rudolf;WINDOWS2;Ott.Rudolf;LINUX;Dev-2
68;WINDOWS;Waldera.Alicja;
94;WINDOWS;Lanzl.Dieter;WINDOWS4;Lanzl.Dieter;WINDOWS3;Lead1
98;WINDOWS;Hofmeier.Erhard;
在上面的例子中,我想請在USERNAME n列中查找值,但列行可能不存在,但CSV(;)和對將保持不變,並且第一個值也是標識符,因此它始終存在。
我發現的方式開始,但需要獲得模式:
(Get-Content C:\script\test.txt) |
Foreach-Object {$_ -replace "^([0-9]+;WINDOWS;[^;]+);$", '[email protected];'} |
Set-Content C:\script\test.txt
編輯 我想出了這個模式:^([0-9]+;WINDOWS;[^;]+);$
這是非常固定在某個特定的文件只能用沒有多個Domain-Username對,並且不依賴於列。
你應該看看使用'Import-Csv'來做到這一點。只需使用';'作爲分隔符。 – arco444 2015-02-24 11:23:41