有一个示例数据文件
Session 1: {21AD8B68-2A42-459e-BD29-F082F47E71B2}
Started: 06-24-2015 11:00
NDS Tree: TEST_TREE
AD Server: dc01.adatum.com
O=BRANCH/OU=BRANCH_CITY1/CN=user1
User
CN=user1,OU=BRANCH_CITY1,OU=ADATUM,DC=adatum,DC=com
user
O=BRANCH/OU=BRANCH_CITY1/CN=EVERYONE1
Group
CN=EVERYONE1,OU=BRANCH_CITY1,OU=ADATUM,DC=adatum,DC=com
group
O=BRANCH/OU=BRANCH_CITY2/CN=user2
User
CN=user2,OU=BRANCH_CITY2,OU=ADATUM,DC=adatum,DC=com
user
O=BRANCH/OU=BRANCH_CITY2/CN=EVERYONE2
Group
CN=EVERYONE2,OU=BRANCH_CITY2,OU=ADATUM,DC=adatum,DC=com
group
我想找到一个包含字符串“group”(区分大小写)或“user”(区分大小写)的行。如果匹配,之前的一行应该像这样改变:
如果“用户”之前更改了一行,则CN =< ...>,OU = ADATUM,DC = adatum,DC = com
如果“group”在CN =< ...>之前更改了一行,则OU = GROUPS,OU = ADATUM,DC = adatum,DC = com
当然,输出是包含所有更改的数据文件。
有什么想法吗?
非常感谢提前,
微米。
答案 0 :(得分:2)
这样的事情可以解决问题:
$scope.colors = [
{name:'blacksomerandomwords', shade:'dark'},
{name:'whitesomerandomwords', shade:'light', notAnOption: true},
{name:'redsomerandomwords', shade:'dark'},
{name:'bluesomerandomwords', shade:'dark', notAnOption: true},
{name:'yellowsomerandomwords', shade:'light', notAnOption: false}
];
<select ng-model="myColor" ng-options="color.name for color in colors"></select>
答案 1 :(得分:2)
实现此目标的最简单方法可能是使用常规for
loop来跟踪行号 - 如果行$n
与“user”匹配,则替换行$n-1
中的字符串。
要执行区分大小写的正则表达式,请使用-cmatch
(请注意c
前缀)。在下面的示例中,我使用了named capture group((?<name>pattern)
)来匹配并捕获user
或group
。
最后一部分,为现有CN=<...>
部分添加新路径可以使用-split
命令和lookbehind来完成,以避免弄乱CN
值中的转义逗号:
# Read file, line by line
$SampleFile = @(Get-Content C:\path\to\data.txt)
# Loop over the text by line numbers
for($i=0;$i -lt $SampleFile.Count;$i++){
# Test if the line matches
if(![string]::IsNullOrWhiteSpace($SampleFile[$i]) -and $SampleFile[$i].Trim() -cmatch "(?<type>^group|user$)"){
# If so, use the match to determine the DN suffix
switch($Matches["type"]){
"group" { $SampleFile[$i-1] = "{0},OU=GROUPS,OU=ADATUM,DC=adatum,DC=com" -f ($SampleFile[$i-1] -split "(?<!\\),")[0] }
"user" { $SampleFile[$i-1] = "{0},OU=ADATUM,DC=adatum,DC=com" -f ($SampleFile[$i-1] -split "(?<!\\),")[0] }
}
}
}
$SampleFile | Out-File C:\path\to\output.txt -Force