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